Wir haben eine hybride iOS-App mit einer UIWebView, die einen recht komplexen Webshop lädt (eine Reihe von Tracking-Pixeln, Javasript, asynchrones Verhalten). Seit der Einführung von iOS 11.3 gibt es viele Abstürze, die anscheinend von UIWebView oder verwandten Komponenten stammen. Der Stacktrace sieht so aus
Crashed: WebThread
0 WebCore 0x18b7b0d98 WebCore::Page::sessionID() const + 162
1 WebKitLegacy 0x18be91204 WebFrameNetworkingContext::storageSession() const + 24
2 WebCore 0x18ad818bc WebCore::ResourceHandle::willSendRequest(WebCore::ResourceRequest&&, WebCore::ResourceResponse&&, WTF::CompletionHandler<void (WebCore::ResourceRequest&&)>&&) + 1012
3 WebCore 0x18ad86f88 WTF::Function<void ()>::CallableWrapper<-[WebCoreResourceHandleAsOperationQueueDelegate connection:willSendRequest:redirectResponse:]::$_1>::call() + 208
4 JavaScriptCore 0x1892157d4 WTF::dispatchFunctionsFromMainThread() + 344
5 Foundation 0x1830fe0ec __NSThreadPerformPerform + 340
6 CoreFoundation 0x18265b404 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 24
7 CoreFoundation 0x18265ac2c __CFRunLoopDoSources0 + 276
8 CoreFoundation 0x18265879c __CFRunLoopRun + 1204
9 CoreFoundation 0x182578da8 CFRunLoopRunSpecific + 552
10 WebCore 0x18a805dcc RunWebThread(void*) + 592
11 libsystem_pthread.dylib 0x1822d9220 _pthread_body + 272
12 libsystem_pthread.dylib 0x1822d9110 _pthread_body + 290
13 libsystem_pthread.dylib 0x1822d7b10 thread_start + 4
Wir sehen keinen Pfad zu unserem Code und vermuten etwas in der JavaScript-Laufzeit des UIWebView, das den Fehler auslöst, aber nicht in der Lage ist.
Wir haben das Problem dadurch vermittelt, dass eine JavaScript-Datei blockiert wurde
Wir können diesen Fehler auch ab iOS 11.4+ nicht mehr reproduzieren.
Ich habe das Problem durch Deaktivieren der JIT in JavaScriptCore (WebKit) gelöst.
Ich lege dies in meine AppDelegate:
setenv("JSC_useJIT", "false", 0);
Ich hoffe das wird helfen.
Herzliche Grüße, Josh.