2012-12-20 14 views
7

Si verifica un errore SIGPIPE nel mio progetto Xcode. Questo errore è stato avviato mostrando da una settimana prima. Se ho commentato questo metodo, chiamare: [self configureBump];, tutto funziona correttamente. Ho integrato BUMP API nel mio progetto. Questa API funziona fino a una settimana prima senza problemi. Non sono sicuro della causa di questo errore. Qualcuno potrebbe aiutarmi a risolvere questo errore? Anche alcuni dei miei amici hanno segnalato questo errore.Eccezione SIGPIPE nel progetto iOS con API BUMP integrata

Xcode Versione: 4.5 iOS Versione: iOS 6.0/iOS 5.0

Si prega di vedere il seguito dello stack:

* 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

Un'altra API buggy ... Ora vedete questo: gli sviluppatori Dropbox non hanno idea delle funzioni variadic e corrompono il vostro stack, è meglio? –

+0

'[auto configureBump]' sembra provenire direttamente dalla loro app di esempio. dovrebbe essere possibile scavare un po 'più a fondo impostando i breakpoint nel debugger Xcode, o impostando le chiamate 'NSLog' nel metodo configureBump stesso per determinare con maggiore precisione esattamente quale delle chiamate sta causando un SIGPIPE. –

risposta

7

C'è una possibilità che SIGPIPE che sono gettati sul timeout presa o nessuna connessione/persa dentro quella lib Potrebbe esserci qualche errore del server dalla loro parte o qualcosa del genere.

Si può andare in giro ignorando SIGPIPE con:

signal(SIGPIPE, SIG_IGN); 

o

signal(SIGPIPE, SO_NOSIGPIPE); 

Verificare this link per i dettagli.

D'altra parte, è possibile eseguire il debug ulteriormente impostando la funzione del gestore con

signal(SIGPIPE, yourHandlerFunc);

e la verifica dello stato delle prese/Ivars/etc in esso.