nuclearace / Socket.IO-Client-Swift

socket.io-client for Swift
Other
361 stars 53 forks source link

Weird crash #86

Closed iCyberon closed 8 years ago

iCyberon commented 8 years ago

Crash log

Thread : Crashed: com.apple.root.default-qos
0  gg                       0x00193290 WebSocket.(processRawMessage in _3123839098BFDA5AC75B983ED38D7FD2)(UnsafePointer<UInt8>, bufferLen : Int) -> () (WebSocket.swift:503)
1  gg                       0x00191688 WebSocket.(processRawMessage in _3123839098BFDA5AC75B983ED38D7FD2)(UnsafePointer<UInt8>, bufferLen : Int) -> () (WebSocket.swift)
2  gg                       0x00190d70 WebSocket.(dequeueInput in _3123839098BFDA5AC75B983ED38D7FD2)() -> () (WebSocket.swift:360)
3  gg                       0x00190904 WebSocket.(processInputStream in _3123839098BFDA5AC75B983ED38D7FD2)() -> () (WebSocket.swift:343)
4  gg                       0x00199ff0 specialized WebSocket.stream(NSStream, handleEvent : NSStreamEvent) -> () (WebSocket.swift:297)
5  gg                       0x00190534 @objc WebSocket.stream(NSStream, handleEvent : NSStreamEvent) -> () (WebSocket.swift)
6  CoreFoundation                 0x2915f707 _signalEventSync + 146
7  CoreFoundation                 0x29169b21 _cfstream_solo_signalEventSync + 204
8  CoreFoundation                 0x2915f393 _CFStreamSignalEvent + 326
9  CFNetwork                      0x28c39eb5 SocketStream::dispatchSignalFromSocketCallbackUnlocked(SocketStreamSignalHolder*) + 40
10 CFNetwork                      0x28c39ba1 SocketStream::socketCallback(__CFSocket*, unsigned long, __CFData const*, void const*) + 148
11 CFNetwork                      0x28c39ad7 SocketStream::_SocketCallBack_stream(__CFSocket*, unsigned long, __CFData const*, void const*, void*) + 58
12 CoreFoundation                 0x291b18a7 __CFSocketPerformV0 + 554
13 CoreFoundation                 0x291aefbf __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 14
14 CoreFoundation                 0x291ae3cf __CFRunLoopDoSources0 + 218
15 CoreFoundation                 0x291aca35 __CFRunLoopRun + 772
16 CoreFoundation                 0x290fa3b1 CFRunLoopRunSpecific + 476
17 CoreFoundation                 0x290fa1c3 CFRunLoopRunInMode + 106
18 Foundation                     0x29e588bd -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 264
19 gg                       0x00197f88 specialized WebSocket.(initStreamsWithData in _3123839098BFDA5AC75B983ED38D7FD2)(NSData, Int) -> () (WebSocket.swift:275)
20 gg                       0x001904b4 WebSocket.(createHTTPRequest in _3123839098BFDA5AC75B983ED38D7FD2)() -> () (WebSocket.swift:214)
21 gg                       0x001967c4 partial apply for WebSocket.(connect(WebSocket) -> () -> ()).(closure #2) (WebSocket.swift:150)
22 libdispatch.dylib              0x375e92e3 _dispatch_call_block_and_release
23 libdispatch.dylib              0x375f3381 _dispatch_root_queue_drain
24 libdispatch.dylib              0x375f43c3 _dispatch_worker_thread3
25 libsystem_pthread.dylib        0x3774fdc1 _pthread_wqthread + 668
26 libsystem_pthread.dylib        0x3774fb14 start_wqthread + 8

This happened 599 times for 3 users.

I'm sending a JSON string from server.

nuclearace commented 8 years ago

What version of the client was this on

iCyberon commented 8 years ago

@nuclearace Unfortunately I don't remember, I updated the socket.io lib. Here's is another one, which I believe is from newer version.

Thread : Crashed: com.apple.root.default-qos
0  ggDriver                       0x00125f0c WebSocket.(processRawMessage in _3123839098BFDA5AC75B983ED38D7FD2)(UnsafePointer<UInt8>, bufferLen : Int) -> () (WebSocket.swift:493)
1  ggDriver                       0x001243d8 WebSocket.(processRawMessage in _3123839098BFDA5AC75B983ED38D7FD2)(UnsafePointer<UInt8>, bufferLen : Int) -> () (WebSocket.swift)
2  ggDriver                       0x00123a74 WebSocket.(dequeueInput in _3123839098BFDA5AC75B983ED38D7FD2)() -> () (WebSocket.swift:353)
3  ggDriver                       0x001235b8 WebSocket.(processInputStream in _3123839098BFDA5AC75B983ED38D7FD2)() -> () (WebSocket.swift:336)
4  ggDriver                       0x0012dcd8 specialized WebSocket.stream(NSStream, handleEvent : NSStreamEvent) -> () (WebSocket.swift:289)
5  ggDriver                       0x00123178 @objc WebSocket.stream(NSStream, handleEvent : NSStreamEvent) -> () (WebSocket.swift)
6  CoreFoundation                 0x2915f707 _signalEventSync + 146
7  CoreFoundation                 0x29169b21 _cfstream_solo_signalEventSync + 204
8  CoreFoundation                 0x2915f393 _CFStreamSignalEvent + 326
9  CFNetwork                      0x28c39eb5 SocketStream::dispatchSignalFromSocketCallbackUnlocked(SocketStreamSignalHolder*) + 40
10 CFNetwork                      0x28c39ba1 SocketStream::socketCallback(__CFSocket*, unsigned long, __CFData const*, void const*) + 148
11 CFNetwork                      0x28c39ad7 SocketStream::_SocketCallBack_stream(__CFSocket*, unsigned long, __CFData const*, void const*, void*) + 58
12 CoreFoundation                 0x291b18a7 __CFSocketPerformV0 + 554
13 CoreFoundation                 0x291aefbf __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 14
14 CoreFoundation                 0x291ae3cf __CFRunLoopDoSources0 + 218
15 CoreFoundation                 0x291aca35 __CFRunLoopRun + 772
16 CoreFoundation                 0x290fa3b1 CFRunLoopRunSpecific + 476
17 CoreFoundation                 0x290fa1c3 CFRunLoopRunInMode + 106
18 Foundation                     0x29e588bd -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 264
19 ggDriver                       0x0012c004 specialized WebSocket.(initStreamsWithData in _3123839098BFDA5AC75B983ED38D7FD2)(NSData, Int) -> () (WebSocket.swift:268)
20 ggDriver                       0x001230f8 WebSocket.(createHTTPRequest in _3123839098BFDA5AC75B983ED38D7FD2)() -> () (WebSocket.swift:191)
21 ggDriver                       0x00130250 WebSocket.(connect(WebSocket) -> () -> ()).(closure #2) (WebSocket.swift:136)
22 libdispatch.dylib              0x375e92e3 _dispatch_call_block_and_release + 10
23 libdispatch.dylib              0x375f3381 _dispatch_root_queue_drain + 1388
24 libdispatch.dylib              0x375f43c3 _dispatch_worker_thread3 + 94
25 libsystem_pthread.dylib        0x3774fdc1 _pthread_wqthread + 668
26 libsystem_pthread.dylib        0x3774fb14 start_wqthread + 8
iCyberon commented 8 years ago

It crashes somewhere during those lines:

            var dataLength = UInt64(payloadLen)
            if dataLength == 127 {
                let bytes = UnsafePointer<UInt64>((buffer+offset))
                dataLength = bytes[0].bigEndian
                offset += sizeof(UInt64)
            } else if dataLength == 126 {
                let bytes = UnsafePointer<UInt16>((buffer+offset))
                dataLength = UInt64(bytes[0].bigEndian)
                offset += sizeof(UInt16)
            }
nuclearace commented 8 years ago

Oh, it's probably related to https://github.com/daltoniam/Starscream/issues/77

iCyberon commented 8 years ago

@nuclearace Looks like disabling optimizations fixed the issue. Thanks :+1: