6

SocketRocket の使用中に iOS EXC_BAD_ACCESS エラーが発生します。問題が自分側にあるのか、SocketRocket 側にあるのかを判断するために、問題をさらにデバッグするにはどうすればよいでしょうか。

私が得るスタックトレースは次のとおりです。

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

または時々

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

私のコードベースは非常にシンプルで、基本的にイベントをサブスクライブし、socketrocket sendMessage をキューで実行します (同時実行を処理するため)。

[signalServices subscribe:my-event toBlock:^(NSNotification * notification) {
    [this.queue addOperation:[[NSInvocationOperation alloc] initWithTarget:self selector:@selector(eventReceived:) object:notification]];
}];

- (void)eventReceived: (NSNotification *)notification {
    // ...
    [socket send:[NSString stringWithFormat:@"%i,1,%@", currentUserId.intValue, [NSNumber numberWithInt: rate.value]]];
}

問題をデバッグするために NSZombies を使用している人々を読んだことがありますが、私の問題はめったに発生しないため、問題が明らかになる前にメモリが不足する可能性があります。99% の確率で正常に動作します。

ソケットなどを使用するアプリをランダムにクラッシュさせる可能性のある iOS について知っておくべきことはありますか? たとえば、バックグラウンド フェッチを有効にしていますが、それがランダム クラッシュの原因でしょうか?

ありがとう !

4

1 に答える 1