2010-12-28 10 views
2

Ich habe ein Problem mit meiner iPhone-Anwendung mit MonoTouch entwickelt.
Ich entwickle eine Anwendung, die einen WCF-Dienst kontaktiert, und wenn der WCF-Dienst antwortet, aktualisiere ich ein UITableView mit den zurückgegebenen Daten, wenn dies erledigt ist, sendet es einen neuen WCF-Async-Aufruf, und wenn es antwortet, aktualisiert es Tisch wieder und so weiter.iPhone-Anwendung stürzt mit Mprotect fehlgeschlagen Fehler (MonoTouch)

Das Problem ist, dass wenn es dies in einer variablen Zeit getan hat, es mit einem Mprotect fehlgeschlagen Fehler 12 abstürzt. Dies geschieht nur, wenn die Anwendung direkt auf dem Telefon und nicht im Simulator ausgeführt wird.

Ich habe versucht zu kommentieren, wo die Aktualisierung der Tabelle passiert, und ein Thread.Sleep (1000) vor dem Senden der nächsten Async-Anfrage an den WCF-Dienst, aber immer noch den gleichen Fehler, kann aber länger ohne aus Versagen.

ich Kontakt mit dem WCF-Dienst durch die „Proxy“ Dateien, die durch SlSvcUtil.exe/noconfig http://mydomain/myservice.svc

Meine Frage, dass dieser Fehler ist, kann in einer Art und Weise zu vermeiden oder vielleicht mit einem Problem zu umgehen? Ist es meine Schuld, oder ist es ein Fehler? Es ist tatsächlich, weil ich die Anwendung in meinem abschließenden Schulprojekt verwenden werde, also könnte es nett sein, wenn ich es beheben könnte.

Ich poste die Konsolenausgabe und einen Teil aus dem Absturzbericht, aber wenn Sie mehr Informationen benötigen, bitte sagen Sie mir, und ich werde es veröffentlichen. Ich bin kein Profi, um Mono oder die MonoTouch-Umgebung zu verwenden, es ist mein erstes Mal, also wären detaillierte Antworten schön.

Console Ausgabe:

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-Bericht:

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 

Antwort

7

Fehler 12 ENOMEM ist, haben Sie den gesamten Speicher auf dem iPhone erschöpft.

+0

Sind Sie sicher? Ich habe die Methode ReceiveMemoryWarning in AppDelegate übergangen Klasse: öffentliche Überschreibung void ReceiveMemoryWarning (UIApplication-Anwendung) { Log.Error ("Speicher Warnung", "Speicher"); } Aber ich bekomme nie diesen Fehler .. – user555866

+0

Ja bin ich sicher. –

+0

Okay, kann ich etwas tun, um dieses Problem zu vermeiden? Oder sollte ich nur meinen Programmcode ändern, um mehr Speicherlicht zu sein. Ich kann einfach nicht verstehen, dass mein Programm so speicherintensiv sein kann. – user555866