[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