MonoTouchで開発されたiPhoneアプリケーションに問題があります。
WCFサービスに接続するアプリケーションを開発しています.WCFサービスが応答すると、返されたデータでUITableViewを更新します。これが完了すると、新しいWCF非同期呼び出しが送信され、もう一度テーブルに戻ってください。iPhoneアプリケーションがMprotectで失敗するエラー(MonoTouch)
問題は、これを多少の時間で実行した場合、Mprotectが失敗したエラー12でクラッシュするという問題です。これは、アプリケーションが電話機で直接実行されていてシミュレータでは実行されていない場合に発生します。
私は、テーブルの更新がどこで起こるかを解説し、次の非同期リクエストをWCFサービスに送る前にThread.Sleep(1000)を作成しようとしましたが、同じエラーですが、失敗する。
私は私の質問は、それが回避策との双方向または多分にこのエラーを回避することが可能であるSlSvcUtil.exe/noConfigによって生成された「プロキシ」ファイル、http://mydomain/myservice.svc
を通じてWCFサービスに連絡?それは私のせいですか、それともバグですか?実際に私は最終的な学校のプロジェクトでアプリケーションを使用するので、私はそれを修正することができればいいですね。
私はコンソールの出力とクラッシュレポートの一部を投稿しますが、もっと情報が必要な場合は教えてください。私は投稿します。私はMonoやMonoTouch環境を初めて使用するプロではないので、詳細な返答がよかったです。
コンソール出力:
Mon Dec 27 20:37:17 tests-iPhone UIKitApplication:dk.test.iphone[0x1c3c][625] <Notice>: Mprotect failed at 0xa09a000 (length 1052672) with errno 12
Mon Dec 27 20:37:17 tests-iPhone UIKitApplication:dk.test.iphone[0x1c3c][625] <Notice>: Stacktrace:
Mon Dec 27 20:37:17 tests-iPhone UIKitApplication:dk.test.iphone[0x1c3c][625] <Notice>: at (wrapper managed-to-native) MonoTouch.UIKit.UIApplication.UIApplicationMain (int,string[],intptr,intptr) <0xffffffff>
Mon Dec 27 20:37:17 tests-iPhone UIKitApplication:dk.test.iphone[0x1c3c][625] <Notice>: at MonoTouch.UIKit.UIApplication.Main (string[],string,string) <0x000e0>
Mon Dec 27 20:37:17 tests-iPhone UIKitApplication:dk.test.iphone[0x1c3c][625] <Notice>: at MonoTouch.UIKit.UIApplication.Main (string[]) <0x00023>
Mon Dec 27 20:37:17 tests-iPhone UIKitApplication:dk.test.iphone[0x1c3c][625] <Notice>: at iPhoneStdView.Application.Main (string[]) <0x0001b>
Mon Dec 27 20:37:17 tests-iPhone UIKitApplication:dk.test.iphone[0x1c3c][625] <Notice>: at (wrapper runtime-invoke) object.runtime_invoke_dynamic (intptr,intptr,intptr,intptr) <0x000c3>
Mon Dec 27 20:37:17 tests-iPhone UIKitApplication:dk.test.iphone[0x1c3c][625] <Notice>: Native stacktrace:
Mon Dec 27 20:37:18 tests-iPhone ReportCrash[635] <Notice>: Formulating crash report for process iPhoneNoNavigation[625]
Mon Dec 27 20:37:18 tests-iPhone com.apple.launchd[1] (UIKitApplication:dk.test.iphone[0x1c3c][625]) <Warning>: (UIKitApplication:dk.test.iphone[0x1c3c]) Job appears to have crashed: Abort trap
Mon Dec 27 20:37:18 tests-iPhone SpringBoard[27] <Warning>: Application 'iPhoneStdView' exited abnormally with signal 6: Abort trap
クラッシュレポート:12 ENOMEMある
Thread 0 Crashed:
0 dyld 0x2fe08110 0x2fe00000 + 33040
1 libSystem.B.dylib 0x3020259e 0x301ff000 + 13726
2 libSystem.B.dylib 0x302531da 0x301ff000 + 344538
3 iPhoneNoNavigation 0x0051975c 0x1000 + 5343068
4 iPhoneNoNavigation 0x00538080 0x1000 + 5468288
5 libSystem.B.dylib 0x302765cc 0x301ff000 + 488908
6 libSystem.B.dylib 0x30201d64 0x301ff000 + 11620
7 CoreFoundation 0x3081fc38 0x307f8000 + 162872
8 CoreFoundation 0x3081f4c2 0x307f8000 + 160962
9 CoreFoundation 0x3081f270 0x307f8000 + 160368
10 CoreFoundation 0x3081f178 0x307f8000 + 160120
11 GraphicsServices 0x31e445ec 0x31e40000 + 17900
12 GraphicsServices 0x31e44698 0x31e40000 + 18072
13 UIKit 0x31e5111c 0x31e4d000 + 16668
14 UIKit 0x31e4f128 0x31e4d000 + 8488
15 iPhoneNoNavigation 0x0006e754 0x1000 + 448340
Thread 0 crashed with ARM Thread State:
r0: 0x35f4d17c r1: 0x302765a9 r2: 0x35989b04 r3: 0x0000000e
r4: 0x2fe29e78 r5: 0x07d17490 r6: 0x302765d3 r7: 0x2fffe24c
r8: 0x00000000 r9: 0x3598762c r10: 0x0000000d r11: 0x07d17470
ip: 0x3598762c sp: 0x2fffe240 lr: 0x3e08dc60 pc: 0x2fe08110
cpsr: 0x20000030
本当ですか?私はAppDelegateクラスのReceiveMemoryWarningメソッドをオーバーライドしました。 public override void ReceiveMemoryWarning(UIApplicationアプリケーション) { Log.Error( "Memory warning"、 "memory"); } このエラーは発生しません。 – user555866
はい、確信しています。 –
さて、この問題を避けるために何かできますか?または、私はプログラムコードを変更して、より多くのメモリライトにする必要があります。私のプログラムは記憶が重くなることは理解できません。 – user555866