2011-11-08 23 views
0

在MonoTouch的我编译的设备 (在模拟器上正常工作,只有当iPhone它编译 崩溃)时得到这个奇怪的错误:MonoTouch的错误:MONO_PATCH_INFO_JIT_ICALL_ADDR mono_marshal_safearray_create

Loaded assembly: 
    /private/var/mobile/Applications/FC6B7E68-E408-42A9-92A6-BC5AC73B3EEC/MyApp4.app/Mono.Security.dll 
    [External] 
    Loaded assembly: 
    /private/var/mobile/Applications/FC6B7E68-E408-42A9-92A6-BC5AC73B3EEC/MyApp4.app/System.dll 
    [External] 
    Loaded assembly: 
    /private/var/mobile/Applications/FC6B7E68-E408-42A9-92A6-BC5AC73B3EEC/MyApp4.app/monotouch.dll 
    [External] 
    unknown MONO_PATCH_INFO_JIT_ICALL_ADDR mono_marshal_safearray_create 
    * Assertion: should not be reached at ../../../../../mono/mono/mini/mini.c:3179 

    Stacktrace: 

    at (wrapper managed-to-native) 
    object.__icall_wrapper_mono_object_new_fast (intptr) <0xffffffff> 

    Native stacktrace: 

     0 MyApp4      0x00628b38 mono_handle_native_sigsegv + 456 
     1 MyApp4      0x006561e4 sigabrt_signal_handler + 168 
     2 libsystem_c.dylib     0x337ed539 _sigtramp + 48 
     3 libsystem_c.dylib     0x337e2f5b pthread_kill + 54 
     4 libsystem_c.dylib     0x337dbfeb abort + 94 
     5 MyApp4      0x007a6310 monoeg_g_logv + 268 
     6 MyApp4      0x007a63e4 monoeg_assertion_message + 80 
     7 MyApp4      0x005fdea0 mono_resolve_patch_target + 2736 
     8 MyApp4      0x0061cd7c mono_aot_plt_resolve + 432 
     9 MyApp4      0x0062b460 mono_aot_plt_trampoline + 88 
     10 MyApp4      0x003948c0 generic_trampoline_aot_plt + 136 
     11 MyApp4      0x00357370 
wrapper_runtime_invoke_object_runtime_invoke_dynamic_intptr_intptr_intptr_intptr 
+ 200 
     12 MyApp4      0x006013a8 mono_jit_runtime_invoke + 2892 
     13 MyApp4      0x00714dd8 mono_runtime_invoke + 200 
     14 MyApp4      0x0070d6cc mono_runtime_class_init_full + 2060 
     15 MyApp4      0x0070ceb0 mono_runtime_class_init + 28 
     16 MyApp4      0x005fed78 mono_jit_compile_method_inner + 224 
     17 MyApp4      0x005fffa4 mono_jit_compile_method_with_opt + 660 
     18 MyApp4      0x00600bcc mono_jit_runtime_invoke + 880 
     19 MyApp4      0x00714dd8 mono_runtime_invoke + 200 
     20 MyApp4      0x007cc154 monotouch_init + 640 
     21 MyApp4      0x005f71d8 main + 3704 
     22 MyApp4      0x00070b58 start + 52 

================================================================= 
Got a SIGABRT while executing native code. This usually indicates 
a fatal error in the mono runtime or one of the native libraries 
used by your application. 
================================================================= 

这让我很生气。我没有线索,崩溃似乎发生在任何代码被调用之前。我在我的项目中使用了两个绑定库(TestFlight和CorePlot),所以也许这与MonoTouch与iPhone的ARMV6架构之间的互操作性编组问题有关。

任何帮助或建议,无论多小,都不胜感激。 谢谢!

更新: 我可以确认使用实验编译器(设置在MonoDevelop中:当为设备编译时为LLVM armv7)应用程序工作正常,根本没有崩溃。看起来真的和MonoTouch的armv6绑定错误有关。但是我需要调试我的应用程序,并且LLVM编译器不能在调试模式下工作。有一些解决方法吗?

还有就是Xamarin邮件列表上的讨论现在:

http://monotouch.2284126.n4.nabble.com/Native-library-with-Monotouch-5-0-part-2-td3992408.html

回答

0

运行时正在寻找方法mono_marshal_safearray_create(运行时内),但不包括在该MonoTouch的方法,因为它与COM(这在iOS上不可用)相关。

这只是一个猜测,但你有一个像这样的任何地方任何属性:在你的代码

[MarshalAs (UnmanagedType.SafeArray, ...)] 

,或者你使用任何外部库?请记住,这不是唯一可以让代码与COM相关的方法。

无论如何我建议filing a bug,这样可以解决这个问题(或者至少有更好的错误报告)。请包括一种方法来重现它(无论是源代码或应用程序本身应该罚款这个错误)。

+0

不,我没有这样的属性。我会尝试提交一个测试用例,谢谢。 –

相关问题