2013-12-18 8 views
5

Ich bekomme iOS EXC_BAD_ACCESS Fehler bei der Verwendung von SocketRocket, und ich frage mich, was ich tun kann, um das Problem weiter zu debuggen, um festzustellen, ob das Problem auf meiner Seite oder auf der Seite von SocketRocket ist.Debuggen von iOS EXC_BAD_ACCESS KERN_INVALID_ADDRESS unter iOS

Der Stacktrace ich erhalte, ist:

Crashed: com.apple.main-thread 
EXC_BAD_ACCESS KERN_INVALID_ADDRESS at 0x2000000c 
raw 
0 libobjc.A.dylib  objc_msgSend + 5 
1 OMlearnings   SRWebSocket.m line 692 __30-[SRWebSocket _failWithError:]_block_invoke_2 
2 libdispatch.dylib _dispatch_call_block_and_release + 10 
10 UIKit    UIApplicationMain + 1136 
11 OMlearnings   main.m line 16 main 

oder manchmal

Crashed: NSOperationQueue Serial Queue 
EXC_BAD_ACCESS KERN_INVALID_ADDRESS at 0xc 
raw 
0 libobjc.A.dylib  objc_msgSend + 5 
1 OMlearnings   SRWebSocket.m line 613 -[SRWebSocket scheduleInRunLoop:forMode:] 
2 OMlearnings   SRWebSocket.m line 600 -[SRWebSocket _connect] 
3 OMlearnings   OMSRealTimeTeamDashboard.m line 157 -[OMSRealTimeTeamDashboard sendMessage:] 
4 OMlearnings   OMSRealTimeTeamDashboard.m line 171 -[OMSRealTimeTeamDashboard eventReceived:] 
5 CoreFoundation  __invoking___ + 68 
6 CoreFoundation  -[NSInvocation invoke] + 282 
7 Foundation   -[NSInvocationOperation main] + 112 
8 Foundation   -[__NSOperationInternal _start:] + 770 
14 libsystem_pthread.dylib _pthread_wqthread + 298 

Meine Code-Basis ist ganz einfach und im Grunde auf Ereignisse abonniert, und socketrocket nachrichts in einer Warteschlange ausführt (mit Parallelität zu behandeln)

Ich habe Leute gelesen mit NSZombies, um das Problem zu debuggen, aber m Das Problem tritt nur selten auf, so dass ich wahrscheinlich keinen Speicher mehr habe, bevor das Problem sichtbar wird. Es funktioniert gut 99% der Zeit.

Gibt es etwas zu wissen über iOS, das zufällig Apps stürzen könnte, die Sockets usw. benutzen? Zum Beispiel haben wir Hintergrund Fetch aktiviert, könnte das die Ursache für einige der zufälligen Abstürze sein?

Danke!

+0

haben Sie das gelöst? – Spail

+0

Irgendein Update auf diesem? – franck

Antwort

4

Im stacktrace,

0 libobjc.A.dylib  objc_msgSend + 5 
1 OMlearnings   SRWebSocket.m line 692 __30-[SRWebSocket _failWithError:]_block_invoke_2 

EXC_BAD_ACCESS in dieser Zeile aufgetreten https://github.com/square/SocketRocket/blob/master/SocketRocket/SRWebSocket.m#L692

[self.delegate webSocket:self didFailWithError:error]; 

Gemäß dem Dokument, https://github.com/square/SocketRocket

SRWebSocket 
(unlike NSURLConnection, SRWebSocket won't retain the delegate) 

@property (nonatomic, assign) id <SRWebSocketDelegate> delegate; 

der Delegat Eigenschaft nicht beibehalten wurde SRWebSocket-Objekt, wenn Sie th nicht beibehalten Wenn das Objekt delegiert wird, stürzt es mit dem ungeordneten Zeiger ab. Wie haben Sie eine starke Referenz für das Delegatobjekt?

+1

das Objekt, das ich als Delegat übergeben, wird mit injective_register_singleton instanziiert, so dass es wirklich unwahrscheinlich ist, dass die Referenz –

+1

verschwindet Warum fügen Sie Ihren Code nicht in Ihre Frage ein? –