Nous avons une application iOS hybride avec un UIWebView qui charge un webshop assez complexe (tas de pixels de suivi, comportement javasript, comportement asynchrone). Depuis le déploiement d'iOS 11.3, nous constatons un grand nombre de pannes qui semblent provenir de UIWebView ou de composants associés. Le stacktrace ressemble à ceci
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
Nous ne voyons aucun chemin vers notre code et soupçonnons quelque chose dans le runtime JavaScript de UIWebView qui déclenche le bogue mais qui n’est pas idéal.
Nous avons résolu le problème en bloquant un fichier JavaScript qui était
Nous ne pouvons plus non plus reproduire ce bogue à partir de iOS 11.4+.
J'ai résolu le problème en désactivant le JIT dans JavaScriptCore (WebKit).
Je mets ceci dans mon AppDelegate:
setenv("JSC_useJIT", "false", 0);
J'espère que cela aidera.
Cordialement, Josh.