J'ai un problème avec mon application iPhone développée avec MonoTouch.
Je développe une application qui contacte un service WCF, et quand le service WCF répond, je mets à jour un UITableView avec les données retournées, quand cela est fait, il envoie un nouvel appel asynchrone WCF, et quand il répond, il met à jour le table encore et ainsi de suite. Le problème est que lorsqu'elle l'a fait dans un laps de temps variable, elle s'est écrasée avec une erreur 12 de Mprotect échouée. Cela ne se produit que lorsque l'application s'exécute directement sur le téléphone et non sur le simulateur.L'application iPhone tombe en panne avec l'erreur Mprotect (MonoTouch)
J'ai essayé de commenter où la mise à jour de la table se produit, et en faisant un Thread.Sleep (1000) avant d'envoyer la prochaine demande Async au service WCF, mais toujours la même erreur, mais peut courir plus longtemps sans échouer.
contacter le service WCF à travers les fichiers « proxy », générés par SlSvcUtil.exe/noconfig http://mydomain/myservice.svc
Ma question est que cette erreur peut être éviter d'une manière ou peut-être une solution de contournement? Est-ce ma faute, ou est-ce un bug? C'est en fait parce que je vais utiliser l'application dans mon projet d'école finale, donc ça pourrait être bien si je pouvais le réparer.
Je poste la sortie de la console, et une partie du rapport d'erreur, mais si vous avez besoin de plus d'informations, dites-le moi, et je l'afficherai. Je ne suis pas un pro pour utiliser Mono ou l'environnement MonoTouch c'est ma première fois, donc les réponses détaillées seraient bien.
Sortie de la console:
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
Crash Report:
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
Etes-vous sûr? J'ai Overidden la méthode ReceiveMemoryWarning dans AppDelegate Classe: public override void ReceiveMemoryWarning (application UIApplication) { Log.Error ("Memory warning", "memory"); } Mais je ne reçois jamais cette erreur .. – user555866
Oui, je suis sûr. –
Bon, je peux faire quelque chose pour éviter ce problème? Ou devrais-je juste changer mon code de programme, pour être plus de lumière de la mémoire. Je ne peux pas comprendre que mon programme peut être si lourd. – user555866