Last post Nov 13, 2013 10:51 AM by gziemian
Nov 13, 2013 10:51 AM|gziemian|LINK
I've recently found an issue that happens regularly on iPad. I have self-host example running on Windows 8.1 and chat client on browser. Everything works perfectly, but when I push refresh button - browser is crashing. This happened only on iPad (both Safari
and Chrome) and only with web sockets. Browsers on desktop, Motorola device or Surface is working well.
The things that I've found is that this crash happens during unload event. The only way I could get rid of this was either to manually disconnect before unload (which is not always possible) or to modify signalR to force async disconnect on unload (connection.stop(true)
- but this only prevents from crashing, server is not notified).
I grab some crash logs:
Thread 3 name: WebThread
Thread 3 Crashed:
0 WebCore 0x396cb03a WebCore::ThreadTimers::sharedTimerFiredInternal() + 130
1 WebCore 0x396caf82 WebCore::timerFired(__CFRunLoopTimer*, void*) + 62
2 CoreFoundation 0x336f65dc __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 12
3 CoreFoundation 0x336f628c __CFRunLoopDoTimer + 268
4 CoreFoundation 0x336f4efc __CFRunLoopRun + 1228
5 CoreFoundation 0x33667eb8 CFRunLoopRunSpecific + 352
6 CoreFoundation 0x33667d44 CFRunLoopRunInMode + 100
7 WebCore 0x39638500 RunWebThread(void*) + 440
8 libsystem_c.dylib 0x3b9dc30e _pthread_start + 306
9 libsystem_c.dylib 0x3b9dc1d4 thread_start + 4
This smells like browser issue, because it should not crash in such case, but maybe
asyncAbort = !!connection.withCredentials && isFirefox11OrGreater
could be modified to recognize iPad devices? Do you have any other ideas?