http://bugzilla.novell.com/show_bug.cgi?id=628333
http://bugzilla.novell.com/show_bug.cgi?id=628333#c0 Summary: Attempting to JIT compile ....... method while running with --aot-only Classification: Mono Product: MonoTouch Version: SVN Platform: Other OS/Version: Other Status: NEW Severity: Major Priority: P5 - None Component: Runtime AssignedTo: gnor...@novell.com ReportedBy: domini...@savagesoftware.com.au QAContact: mono-bugs@lists.ximian.com Found By: --- Blocker: --- User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0b2) Gecko/20100720 Firefox/4.0b2 I originally posted about this bug here... http://forums.monotouch.net/yaf_postst857.aspx Essentially some MonoTouch generics code works fine in the iPhone simulator, but causes a System.ExecutionEngineException on an actual iPod Touch device ( iOS 3.1.3 ). From what Kangaroo says, it seems I am using generics "in a way that the aot compiler cannot statically determine." Kangaroo has asked me to submit a bug report with steps to reproduce. See below for more info. Reproducible: Always Steps to Reproduce: 0. Some Varaibles... private float[] Verts; private byte[] Diff; private int[] SegOffs; private int[] SegSizes; private int EdgeOff; private int SelectedOff; 1. Grab implement the following method in one of your classes... private void TransformBuffer<T>(T[] inReadBuffer, T[]inWriteBuffer, int inReadIdx, int inWriteIdx, int inCount, int inStride, Func<int, T, T> inProc) { int ReadIdx = inReadIdx * inStride; int WriteIdx = inWriteIdx * inStride; for (int i = 0; i < (inCount * inStride); ++i) inWriteBuffer[WriteIdx + i] = inProc(i, inReadBuffer[ReadIdx + i]); } 2. Call the aforementioned method as follows... // Bit of a convoluted way of doing this, but it works for now.. var Cols = new byte[] { MenuInnerSelectedCol.R, MenuInnerSelectedCol.G, MenuInnerSelectedCol.B, MenuInnerSelectedCol.A, MenuOuterSelectedCol.R, MenuOuterSelectedCol.G, MenuOuterSelectedCol.B, MenuOuterSelectedCol.A }; TransformBuffer<byte>(Diff, Diff, SegOffs[inMenu.LastSelected], SelectedOff, SegSizes[inMenu.LastSelected], 4, (Idx, Col) => { int PtIdx = Idx / 4; if ((PtIdx % 2) == 0) { return Cols[(Idx % 4) + 4]; } else { return Cols[Idx % 4]; } }); Actual Results: Works fine within the iPhone Simulator. Crashes with System.ExecutionEngineException which reads.... Attempting to JIT compile ....TransformBuffer... method while running with --aot-only. On and iPod Touch device. Expected Results: For it work within the iPhone Simulator and also on the iPod/iPhone devices. Though it is possible to work around this bug, I think it would better if the compiler was consistent across both Simulator and devices. Anyway here is the Crash Log.... Mono.Debugger.Soft.AbsentInformationException: Debug information is not available for this frame. at Mono.Debugger.Soft.VirtualMachine.ErrorHandler (System.Object sender, Mono.Debugger.Soft.ErrorHandlerEventArgs args) [0x00000] in <filename unknown>:0 at Mono.Debugger.Soft.Connection.SendReceive (CommandSet command_set, Int32 command, Mono.Debugger.Soft.PacketWriter packet) [0x00000] in <filename unknown>:0 at Mono.Debugger.Soft.Connection.StackFrame_GetValues (Int64 thread_id, Int64 id, System.Int32[] pos) [0x00000] in <filename unknown>:0 at Mono.Debugger.Soft.StackFrame.GetValue (Mono.Debugger.Soft.LocalVariable var) [0x00000] in <filename unknown>:0 at Mono.Debugging.Soft.VariableValueReference.get_Value () [0x00000] in <filename unknown>:0 at Mono.Debugging.Evaluation.ValueReference.OnCreateObjectValue (Mono.Debugging.Client.EvaluationOptions options) [0x00000] in <filename unknown>:0 at Mono.Debugging.Evaluation.ValueReference.CreateObjectValue (Mono.Debugging.Client.EvaluationOptions options) [0x00000] in <filename unknown>:0 Mono.Debugger.Soft.AbsentInformationException: Debug information is not available for this frame. at Mono.Debugger.Soft.VirtualMachine.ErrorHandler (System.Object sender, Mono.Debugger.Soft.ErrorHandlerEventArgs args) [0x00000] in <filename unknown>:0 at Mono.Debugger.Soft.Connection.SendReceive (CommandSet command_set, Int32 command, Mono.Debugger.Soft.PacketWriter packet) [0x00000] in <filename unknown>:0 at Mono.Debugger.Soft.Connection.StackFrame_GetValues (Int64 thread_id, Int64 id, System.Int32[] pos) [0x00000] in <filename unknown>:0 at Mono.Debugger.Soft.StackFrame.GetValue (Mono.Debugger.Soft.LocalVariable var) [0x00000] in <filename unknown>:0 at Mono.Debugging.Soft.VariableValueReference.get_Value () [0x00000] in <filename unknown>:0 at Mono.Debugging.Evaluation.ValueReference.OnCreateObjectValue (Mono.Debugging.Client.EvaluationOptions options) [0x00000] in <filename unknown>:0 at Mono.Debugging.Evaluation.ValueReference.CreateObjectValue (Mono.Debugging.Client.EvaluationOptions options) [0x00000] in <filename unknown>:0 Mono.Debugger.Soft.AbsentInformationException: Debug information is not available for this frame. at Mono.Debugger.Soft.VirtualMachine.ErrorHandler (System.Object sender, Mono.Debugger.Soft.ErrorHandlerEventArgs args) [0x00000] in <filename unknown>:0 at Mono.Debugger.Soft.Connection.SendReceive (CommandSet command_set, Int32 command, Mono.Debugger.Soft.PacketWriter packet) [0x00000] in <filename unknown>:0 at Mono.Debugger.Soft.Connection.StackFrame_GetValues (Int64 thread_id, Int64 id, System.Int32[] pos) [0x00000] in <filename unknown>:0 at Mono.Debugger.Soft.StackFrame.GetValue (Mono.Debugger.Soft.LocalVariable var) [0x00000] in <filename unknown>:0 at Mono.Debugging.Soft.VariableValueReference.get_Value () [0x00000] in <filename unknown>:0 at Mono.Debugging.Evaluation.ValueReference.OnCreateObjectValue (Mono.Debugging.Client.EvaluationOptions options) [0x00000] in <filename unknown>:0 at Mono.Debugging.Evaluation.ValueReference.CreateObjectValue (Mono.Debugging.Client.EvaluationOptions options) [0x00000] in <filename unknown>:0 Mono.Debugger.Soft.AbsentInformationException: Debug information is not available for this frame. at Mono.Debugger.Soft.VirtualMachine.ErrorHandler (System.Object sender, Mono.Debugger.Soft.ErrorHandlerEventArgs args) [0x00000] in <filename unknown>:0 at Mono.Debugger.Soft.Connection.SendReceive (CommandSet command_set, Int32 command, Mono.Debugger.Soft.PacketWriter packet) [0x00000] in <filename unknown>:0 at Mono.Debugger.Soft.Connection.StackFrame_GetValues (Int64 thread_id, Int64 id, System.Int32[] pos) [0x00000] in <filename unknown>:0 at Mono.Debugger.Soft.StackFrame.GetValue (Mono.Debugger.Soft.LocalVariable var) [0x00000] in <filename unknown>:0 at Mono.Debugging.Soft.VariableValueReference.get_Value () [0x00000] in <filename unknown>:0 at Mono.Debugging.Evaluation.ValueReference.OnCreateObjectValue (Mono.Debugging.Client.EvaluationOptions options) [0x00000] in <filename unknown>:0 at Mono.Debugging.Evaluation.ValueReference.CreateObjectValue (Mono.Debugging.Client.EvaluationOptions options) [0x00000] in <filename -- Configure bugmail: http://bugzilla.novell.com/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the QA contact for the bug. _______________________________________________ mono-bugs maillist - mono-bugs@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-bugs