2012-12-20 6 views
7

Ich habe einen Fehler SIGPIPE in meinem Xcode-Projekt. Dieser Fehler wurde seit einer Woche angezeigt. Wenn ich diese Methode kommentierte, rufen Sie an: [self configureBump]; alles funktioniert gut. Ich hatte in meinem Projekt BUMP API integriert. Diese API funktioniert bis eine Woche vorher ohne Probleme. Ich bin mir nicht sicher über die Ursache dieses Fehlers. Könnte mir bitte jemand helfen, diesen Fehler zu beheben? Einige meiner Freunde werden ebenfalls über diesen Fehler informiert.SIGPIPE-Ausnahme in iOS-Projekt Mit BUMP-API Integriert

Xcode Version: 4.5 iOS Version: iOS 6.0/iOS 5.0

Bitte beachten Sie die folgenden Stack-Trace:

* thread #1: tid = 0x1c03, 0x95a887d2 libsystem_kernel.dylib`mach_msg_trap + 10, stop reason = signal SIGPIPE 
    frame #0: 0x95a887d2 libsystem_kernel.dylib`mach_msg_trap + 10 
    frame #1: 0x95a87cb0 libsystem_kernel.dylib`mach_msg + 68 
    frame #2: 0x029ef13a CoreFoundation`__CFRunLoopServiceMachPort + 186 
    frame #3: 0x02952580 CoreFoundation`__CFRunLoopRun + 1312 
    frame #4: 0x02951db4 CoreFoundation`CFRunLoopRunSpecific + 212 
    frame #5: 0x02951ccb CoreFoundation`CFRunLoopRunInMode + 123 
    frame #6: 0x03093879 GraphicsServices`GSEventRunModal + 207 
    frame #7: 0x0309393e GraphicsServices`GSEventRun + 114 
    frame #8: 0x017a0a9b UIKit`UIApplicationMain + 1175 
    frame #9: 0x00002dd7 iCard`main + 199 at main.m:17 
    frame #10: 0x00002185 iCard`start + 53 
+1

Eine weitere Buggy-API ... Jetzt sehen Sie: Die Dropbox-Entwickler haben keine Ahnung von variadischen Funktionen und beschädigen Ihren Stack, ist das besser? –

+0

'[self configureBump]' sieht aus, als käme es direkt aus der Beispiel-App. Es sollte möglich sein, etwas tiefer zu graben, indem Haltepunkte im Xcode-Debugger gesetzt werden, oder indem NSLog-Aufrufe in der configureBump-Methode selbst gesetzt werden, um genauer zu bestimmen, welcher der Aufrufe ein SIGPIPE verursacht. –

Antwort

7

eine Möglichkeit gibt es, dass SIGPIPE auf Socket-Timeout oder keine/verlorene Verbindung geworfen in dieser lib. Möglicherweise liegt ein Serverfehler auf ihrer Seite oder so.

Sie können mit durch Ignorieren SIGPIPE umgehen:

signal(SIGPIPE, SIG_IGN); 

oder

signal(SIGPIPE, SO_NOSIGPIPE); 

prüfen this link für weitere Einzelheiten.

Auf der anderen Seite können Sie weitere debuggen, indem Sie Ihre Handler-Funktion mit

signal(SIGPIPE, yourHandlerFunc);

und Kontrolle Zustand der Steckdosen/ivars/etc darin zu setzen.

Verwandte Themen