0

MonoTouch では、デバイス用にコンパイルするときにこの奇妙なエラーが発生します (シミュレーターでは正常に動作しますが、iPhone 用にコンパイルした場合にのみクラッシュします)。

    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.
=================================================================

これは私を怒らせています。コードが呼び出される前にクラッシュが発生したようです。プロジェクトで 2 つのバインディング ライブラリ (TestFlight と CorePlot) を使用しているため、これは iPhone の ARMV6 アーキテクチャで MonoTouch が持つ相互運用マーシャリングの問題に関連している可能性があります。

どんなに小さなことでも、助けや提案をいただければ幸いです。ありがとう!

更新: 実験的なコンパイラ (MonoDevelop での設定: デバイス用にコンパイルするときの LLVM armv7) を使用して、アプリが正常に動作し、まったくクラッシュしないことを確認できます。これは、MonoTouch の armv6 バインド バグに関連しているようです。しかし、アプリをデバッグする必要があり、LLVM コンパイラがデバッグ モードで動作しません。回避策はありますか?

現在、Xamarin メーリング リストで議論が行われています。

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

4

1 に答える 1