2010-12-28 4 views
2

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 

Répondre

7

Erreur 12 est ENOMEM, vous avez épuisé toute la mémoire disponible sur l'iPhone.

+0

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

+0

Oui, je suis sûr. –

+0

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

Questions connexes