[Mono-dev] Unable to call methods on managed objects while running Mono on the iPhone

mobbe peter.moberg at gmail.com
Mon Feb 23 00:07:57 EST 2009

An update on this one...I found a setting in XCode that said  "Compile for
Thumb" and that one was set to true. I unchecked it and recompiled
everything and now the code doesn't stop at the same position anymore...now
I get an EXC_BAD_ACCESS on the get_hazardous_pointer...so I am still not
there but at least I cleared the hurdle I first posted about. Since thumb
instructions are 16 bits and ARM mode are 32 bits things must have not been
aligned properly and hence the BAD_INSTRUCTION exceptions. This is the call
stack right now...  

#0	0x0007e0cc in get_hazardous_pointer at domain.c:276
#1	0x0007e4e8 in mono_jit_info_table_find at domain.c:370
#2	0x0020f17c in mono_get_generic_context_from_code at
#3	0x0020f5a8 in mono_convert_imt_slot_to_vtable_slot at
#4	0x0021044c in mono_magic_trampoline at mini-trampolines.c:348
#5	0x03904524 in method_order_end

I guess my next step is to research my hazardous_pointers.... 

mobbe wrote:
> Over the past couple of weeks I have been working with getting the Mono
> framework up and running on the iPhone and I am darn close to have it all
> working.. .I have been able to get the AOT compilation to work and was
> able this morning to startup Mono in full aot mode on the device. Big
> thanks to Zoltan Varga for helping me through all the roadblocks I ran
> into.  I have been working with a SVN HEAD version that I updated last
> week sometime.
> Next step I took was to try to invoke some methods on classes in the
> msorlib assembly to see if I could execute managed code and this is where
> I ran into a new road block..
> It looks like I am only able to execute .ctor methods!? During the startup
> of Mono it creates a few exceptions (OutOfMemoryException etc..) and it
> invokes its constructor method and passes in parameters. This works just
> fine...and here it is executing managed code.
> However, I tried to execute the ToString() method on an instance of the
> Exception class and then the program is interrupted and stopped in the
> prolog for the function mono_get_lmf_addr.. if I continue to run the
> program
> I get a BAD_INSTRUCTION message and the whole thing shuts down...
> Here is the code I am trying to execute... 
> MonoDomain * domain = mono_jit_init(""); 
> MonoAssembly* msCorlib = mono_domain_assembly_open (domain,"mscorlib"); 
> MonoImage* image = mono_assembly_get_image(msCorlib);
> MonoClass *klass = mono_class_from_name (image, "System", "Exception");
> MonoObject* o = mono_object_new (domain, klass);
> MonoMethodDesc* methodDesc =
> mono_method_desc_new("System.Object:ToString", TRUE);
> MonoMethod* toStringMethod = mono_method_desc_search_in_class(methodDesc,
> klass);
> MonoObject* result = mono_runtime_invoke(toStringMethod, o, NULL, NULL);
> I don't know if it would help you but here is the assembly where it all
> stops... 
> mono_get_lmf_addr
> 0x001d5bdc  <+0000>  push {r4, r5, r7, lr}
> 0x001d5bde  <+0002>  add r7, sp, #8
> 0x001d5be0  <+0004>  sub sp, #12 <-- stops here
> 0x001d5be2  <+0006>  ldr r3, [pc, #76] (0x1d5c30
> <mono_get_lmf_addr+84>)
> 0x001d5be4  <+0008>  add r3, pc
> 0x001d5be6  <+0010>  ldr r3, [r3, #0]
> 0x001d5be8  <+0012>  adds r0, r3, #0
> 0x001d5bea  <+0014>  bl 0x3e640 <TlsGetValue>
> I get the same problem if I try to run other methods on other objects or
> static methods as well...Only constructor methods seems to work.
> It looks to me that the stack isn't setup properly since it always throws
> the EXC_BAD_INSTRUCTION when trying to access the stack pointer. 
> I have been banging my head against this problem for two days and right
> now I am not able to figure out how to troubleshoot this. If there is
> anyone out there that have any suggestion on how I should go about
> troubleshooting this I would really appreciate it. It stings a bit to come
> this close and not be able to cross the finish line... 
> Thanks,

View this message in context: http://www.nabble.com/Unable-to-call-methods-on-managed-objects-while-running-Mono-on-the-iPhone-tp22155202p22155556.html
Sent from the Mono - Dev mailing list archive at Nabble.com.

More information about the Mono-devel-list mailing list