2013-08-21 7 views
5

PInvoke呼び出しのDllImport属性を持つクラスをロードするときにクラッシュするXamarin iOSでiOSアプリケーションが構築されています。例外は:Xamarin iOSが大きなネイティブライブラリをロードするときにSystem.TypeInitializationExceptionをスローする

Unhandled managed exception: An exception was thrown by the type initializer for Pazanga.Native.ZzPINVOKE (System.TypeInitializationException) 

アプリは正常に動作しましたが、ネイティブライブラリのサイズが大きくなったときにクラッシュし始めました。ライブラリの一部を切り取った後、再び機能しましたが、新しいライブラリをリンクした後、再びクラッシュしました。このクラッシュは、実際にネイティブライブラリに呼び出される前に発生します。ここで

は、クラッシュの後、デバイスのログです:http://pastebin.com/vW3CMXHq

内部例外は以下のとおりです。

Aug 23 10:33:40 Outboxs-iPod pazanga[4216] <Warning>: System.TypeInitializationException: An exception was thrown by the type initializer for Pazanga.Native.ZzPINVOKE ---> System.TypeInitializationException: An exception was thrown by the type initializer for SWIGStringHelper ---> System.ExecutionEngineException: Attempting to JIT compile method '(wrapper native-to-managed) Pazanga.Native.ZzPINVOKE/SWIGStringHelper:CreateString (intptr)' while running with --aot-only. See http://docs.xamarin.com/ios/about/limitations for more information. 
at (wrapper managed-to-native) object:__icall_wrapper_mono_delegate_to_ftnptr (object) 
at (wrapper managed-to-native) Pazanga.Native.ZzPINVOKE/SWIGStringHelper:SWIGRegisterStringCallback_Zz (Pazanga.Native.ZzPINVOKE/SWIGStringHelper/SWIGStringDelegate) 
at Pazanga.Native.ZzPINVOKE+SWIGStringHelper..cctor() [0x00017] in /Users/max/Code/pazanga/mobile/ios/bindings/ZzPINVOKE.cs:229 
--- End of inner exception stack trace --- 
at Pazanga.Native.ZzPINVOKE..cctor() [0x0000a] in /Users/max/Code/pazanga/mobile/ios/bindings/ZzPINVOKE.cs:233 
--- End of inner exception stack trace --- 
at Pazanga.Native.Zz.locate (System.Byte[] image, image_format format, Int32 width, Int32 height, Int32 x, Int32 y) [0x00009] in /Users/max/Code/pazanga/mobile/ios/bindings/Zz.cs:16 
at Pazanga.CaptureDecode.ProcessFrame (System.Byte[] data, Int32 dataWidth, Int32 dataHeight, Boolean isPicture) [0x000cf] in /Users/max/Code/pazanga/mobile/common/CaptureDecode.cs:95 
at Pazanga.iOS.CaptureViewController.HandleNewFrame (System.Byte[] data, Int32 width, Int32 height) [0x0003b] in /Users/max/Code/pazanga/mobile/ios/App/CaptureViewController.cs:128 
at Pazanga.iOS.CaptureManager.OnNewFrame (System.Byte[] array, Int32 width, Int32 height) [0x00015] in /Users/max/Code/pazanga/mobile/ios/App/CaptureManager.cs:126 
at Pazanga.iOS.CaptureManager+OutputDelegate.DidOutputSampleBuffer (MonoTouch.AVFoundation.AVCaptureOutput captureOutput, MonoTouch.CoreMedia.CMSampleBuffer sampleBuffer, MonoTouch.AVFoundation.AVCaptureConnection connection) [0x000c6] in /Users/max/Code/pazanga/mobile/ios/App/CaptureManager.cs:110 
Aug 23 10:33:40 Outboxs-iPod pazanga[4216] <Warning>: System.TypeInitializationException: An exception was thrown by the type initializer for SWIGStringHelper ---> System.ExecutionEngineException: Attempting to JIT compile method '(wrapper native-to-managed) Pazanga.Native.ZzPINVOKE/SWIGStringHelper:CreateString (intptr)' while running with --aot-only. See http://docs.xamarin.com/ios/about/limitations for more information. 
at (wrapper managed-to-native) object:__icall_wrapper_mono_delegate_to_ftnptr (object) 
at (wrapper managed-to-native) Pazanga.Native.ZzPINVOKE/SWIGStringHelper:SWIGRegisterStringCallback_Zz (Pazanga.Native.ZzPINVOKE/SWIGStringHelper/SWIGStringDelegate) 
at Pazanga.Native.ZzPINVOKE+SWIGStringHelper..cctor() [0x00017] in /Users/max/Code/pazanga/mobile/ios/bindings/ZzPINVOKE.cs:229 
--- End of inner exception stack trace --- 
at Pazanga.Native.ZzPINVOKE..cctor() [0x0000a] in /Users/max/Code/pazanga/mobile/ios/bindings/ZzPINVOKE.cs:233 
Aug 23 10:33:40 Outboxs-iPod pazanga[4216] <Warning>: System.ExecutionEngineException: Attempting to JIT compile method '(wrapper native-to-managed) Pazanga.Native.ZzPINVOKE/SWIGStringHelper:CreateString (intptr)' while running with --aot-only. See http://docs.xamarin.com/ios/about/limitations for more information. 
at (wrapper managed-to-native) object:__icall_wrapper_mono_delegate_to_ftnptr (object) 
at (wrapper managed-to-native) Pazanga.Native.ZzPINVOKE/SWIGStringHelper:SWIGRegisterStringCallback_Zz (Pazanga.Native.ZzPINVOKE/SWIGStringHelper/SWIGStringDelegate) 
at Pazanga.Native.ZzPINVOKE+SWIGStringHelper..cctor() [0x00017] in /Users/max/Code/pazanga/mobile/ios/bindings/ZzPINVOKE.cs:229 

そして、ここでは、例外に表示されます(SWIGによって生成された)SWIGStringHelperクラスです

protected class SWIGStringHelper { 

    public delegate string SWIGStringDelegate(string message); 
    static SWIGStringDelegate stringDelegate = new SWIGStringDelegate(CreateString); 

    [DllImport("__Internal", EntryPoint="SWIGRegisterStringCallback_Zz")] 
    public static extern void SWIGRegisterStringCallback_Zz(SWIGStringDelegate stringDelegate); 

    [MonoTouch.MonoPInvokeCallback(typeof(SWIGStringDelegate))] 
    static string CreateString(string cString) { 
    return cString; 
    } 

    static SWIGStringHelper() { 
    SWIGRegisterStringCallback_Zz(stringDelegate); 
    } 
} 

これを解決する方法はありますか?

+0

Xamarin Studioのアプリケーション出力および/またはデバイスログに完全な出力を投稿してください。おそらく、この例外をキャッチするMainメソッドにtry/catchハンドラを追加することで、より良いメッセージを出力できます(また、元の例外に達するまでInnerExceptionsを反復処理できます)。 –

+0

ありがとう@RolfBjarneKvinge!私はデバイスログを追加しました。私はMainでtry/catchで例外をキャッチできませんでした。ハンドラから何も出力されず、ブレークポイントも機能しませんでした。 – MaxM

+0

Mainのtry/catchは動作しませんでした。メインスレッドでクラッシュしていないため、Mainがスタックにないためです。取得したスタックトレースのメソッドの1つにtry/catchを追加してみてください(OutputDelegate.DidOutputSampleBuffer [...]/CaptureManager.cs:111など) –

答えて

2

ループを閉じるには、bug 14194(文字列を使用した逆引きコールバック)の複製であることが判明しました。

TypeInitializationExceptionは、例外が静的コンストラクタ内で発生したためにスローされました。

関連する問題