[Mono-bugs] [Bug 628333] New: Attempting to JIT compile ....... method while running with --aot-only

bugzilla_noreply at novell.com bugzilla_noreply at novell.com
Wed Aug 4 10:03:34 EDT 2010


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: gnorton at novell.com
        ReportedBy: Dominique at SavageSoftware.com.au
         QAContact: mono-bugs at 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.


More information about the mono-bugs mailing list