[Mono-bugs] [Bug 653502] New: Runtime crash: An exception was thrown by the type initializer for PredicteOf'1

bugzilla_noreply at novell.com bugzilla_noreply at novell.com
Sun Nov 14 05:54:34 EST 2010


https://bugzilla.novell.com/show_bug.cgi?id=653502

https://bugzilla.novell.com/show_bug.cgi?id=653502#c0


           Summary: Runtime crash: An exception was thrown by the type
                    initializer for PredicteOf'1
    Classification: Mono
           Product: MonoTouch
           Version: unspecified
          Platform: Other
        OS/Version: Other
            Status: NEW
          Severity: Normal
          Priority: P5 - None
         Component: Runtime
        AssignedTo: gnorton at novell.com
        ReportedBy: rainer at qythyx.com
         QAContact: mono-bugs at lists.ximian.com
          Found By: ---
           Blocker: ---


Created an attachment (id=400095)
 --> (http://bugzilla.novell.com/attachment.cgi?id=400095)
MonoDevelop crash dump

User-Agent:       Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US)
AppleWebKit/534.7 (KHTML, like Gecko) Chrome/7.0.517.44 Safari/534.7

While trying to debug this MonoDevelop crashed (details attached), so I don't
have full details.

First, the inner exception was:
Attempting to JIT compile method
'System.Linq.Enumerable/PredicateOf`1<Qythyx.Zoing.Game.Ship/IntentionWithTime>:.cctor
()' while running with --aot-only.

IntentionWithTime in a private struct. It is relatively simple, so I've
included it and another referenced struct, Intention in the Additional
Information section.


The action code being run when the exception occurred was:
_nextIntention = (
    from interaction in interactions
    where interaction != IntentionWithTime.Empty
        && interaction.Time <= timeRemaining
    orderby interaction.Time
    select interaction
 ).FirstOrDefault();



Reproducible: Always

Steps to Reproduce:
1.
2.
3.




        private struct IntentionWithTime
        {
            public static readonly IntentionWithTime Empty = new
IntentionWithTime();
            public float Time;
            public Intention Intention;
            public bool Bounced;

            public IntentionWithTime(float time, Intention intention, bool
bounced)
            {
                Time = time;
                Intention = intention;
                Bounced = bounced;
            }

            public override string ToString()
            {
                return String.Format("{0} @ {1} {2}", Intention, Time, Bounced
? "Bounced" : "No Bounce");
            }

            public static bool operator ==(IntentionWithTime a,
IntentionWithTime b)
            {
                return a.Time == b.Time && a.Intention == b.Intention;
            }

            public static bool operator !=(IntentionWithTime a,
IntentionWithTime b)
            {
                return !(a == b);
            }

            public override bool Equals(object obj)
            {
                return this == (IntentionWithTime)obj;
            }

            public override int GetHashCode()
            {
                return Time.GetHashCode() ^ Intention.GetHashCode() ^
Bounced.GetHashCode();
            }
        }

        private struct Intention
        {
            public Vector2 Position;
            public Direction Direction;
            public float Speed;

            public Intention(Vector2 position, Direction direction, float
speed)
            {
                Position = position;
                Direction = direction;
                Speed = speed;
            }

            public Intention GetOffset(float ticks)
            {
                Intention next = this;
                next.Position = Position + Direction.CreateDelta(ticks *
Speed);
                return next;
            }

            public override string ToString()
            {
                return String.Format("{0} {1} {2}", Position, Direction,
Speed);
            }

            public static bool operator ==(Intention a, Intention b)
            {
                return a.Position == b.Position && a.Direction == b.Direction
&& a.Speed == b.Speed;
            }

            public static bool operator !=(Intention a, Intention b)
            {
                return !(a == b);
            }

            public override bool Equals(object obj)
            {
                return obj is Intention && this == (Intention)obj;
            }

            public override int GetHashCode()
            {
                return Position.GetHashCode() ^ Direction.GetHashCode() ^
Speed.GetHashCode();
            }
        }

-- 
Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.


More information about the mono-bugs mailing list