Multiple UIWebView WebCore Crashes
Asked Answered
G

0

16

I'm embedding YouTube videos using the power of the YouTube Helper Library. However, we're seeing multiple crashes in production related to WebCore and a couple related to JavaScriptCore. It might be important to note that these crashes are only happening on iOS 12 devices.

See below for details of some of the crashes:

1. VideoFullscreenControllerContext::rateChanged(bool, float)

Thread 0 name:
Thread 0 Crashed:
0   WebCore                         0x000000024227c270 
VideoFullscreenControllerContext::rateChanged(bool, float) + 308 (WebVideoFullscreenControllerAVKit.mm:396)
1   WebCore                         0x000000024227c164 VideoFullscreenControllerContext::rateChanged(bool, float) + 40 (WebVideoFullscreenControllerAVKit.mm:388)
2   libdispatch.dylib               0x0000000238f236c8 _dispatch_call_block_and_release + 24 (init.c:1372)
3   libdispatch.dylib               0x0000000238f24484 _dispatch_client_callout + 16 (object.m:511)
4   libdispatch.dylib               0x0000000238f03b44 _dispatch_main_queue_callback_4CF$VARIANT$armv81 + 1012 (inline_internal.h:2441)
5   CoreFoundation                  0x000000023947a1bc __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 12 (CFRunLoop.c:1813)
6   CoreFoundation                  0x0000000239475084 __CFRunLoopRun + 1964 (CFRunLoop.c:3113)
7   CoreFoundation                  0x00000002394745b8 CFRunLoopRunSpecific + 436 (CFRunLoop.c:3247)
8   GraphicsServices                0x000000023b6e8584 GSEventRunModal + 100 (GSEvent.c:2245)
9   UIKitCore                       0x0000000265ebb558 UIApplicationMain + 212 (UIApplication.m:4341)
10  SteerClear                      0x0000000100e2f078 main + 56 (AppDelegate.swift:25)
11  libdyld.dylib                   0x0000000238f34b94 start + 4

-

2. VideoFullscreenControllerContext::currentTimeChanged(double, double)

Thread 0 name:
Thread 0 Crashed:
0   WebCore                         0x000000021dcf7ea4 VideoFullscreenControllerContext::currentTimeChanged(double, double) + 296 (WebVideoFullscreenControllerAVKit.mm:370)
1   WebCore                         0x000000021dcf7da0 VideoFullscreenControllerContext::currentTimeChanged(double, double) + 36 (WebVideoFullscreenControllerAVKit.mm:362)
2   libdispatch.dylib               0x000000021499f6c8 _dispatch_call_block_and_release + 24 (init.c:1372)
3   libdispatch.dylib               0x00000002149a0484 _dispatch_client_callout + 16 (object.m:511)
4   libdispatch.dylib               0x000000021494c9ec _dispatch_main_queue_callback_4CF$VARIANT$mp + 1068 (inline_internal.h:2441)
5   CoreFoundation                  0x0000000214ef61bc __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 12 (CFRunLoop.c:1813)
6   CoreFoundation                  0x0000000214ef1084 __CFRunLoopRun + 1964 (CFRunLoop.c:3113)
7   CoreFoundation                  0x0000000214ef05b8 CFRunLoopRunSpecific + 436 (CFRunLoop.c:3247)
8   GraphicsServices                0x0000000217164584 GSEventRunModal + 100 (GSEvent.c:2245)
9   UIKitCore                       0x0000000241937558 UIApplicationMain + 212 (UIApplication.m:4341)
10  SteerClear                      0x0000000100c0f078 main + 56 (AppDelegate.swift:25)
11  libdyld.dylib                   0x00000002149b0b94 start + 4

-

3. WebCore::PlaybackSessionModelMediaElement::updateForEventName(WTF::AtomicString const&)

Thread 4 name:
Thread 4 Crashed:
0   WebCore                         0x0000000197d825bc WebCore::PlaybackSessionModelMediaElement::updateForEventName(WTF::AtomicString const&) + 1240 (PlaybackSessionModelMediaElement.mm:150)
1   WebCore                         0x0000000197d82564 WebCore::PlaybackSessionModelMediaElement::updateForEventName(WTF::AtomicString const&) + 1152 (PlaybackSessionModelMediaElement.mm:148)
2   WebCore                         0x00000001986bdc28 WebCore::EventTarget::fireEventListeners(WebCore::Event&, WTF::Vector<WTF::RefPtr<WebCore::RegisteredEventListener, WTF::DumbPtrTraits<WebCore::RegisteredEventListener> >, 1ul, WTF::CrashOnOverflow, 16ul>) + 736 (EventTarget.cpp:292)
3   WebCore                         0x00000001986bb548 WebCore::EventTarget::fireEventListeners(WebCore::Event&) + 260 (EventTarget.cpp:234)
4   WebCore                         0x00000001986b8460 WebCore::dispatchEventInDOM(WebCore::Event&, WebCore::EventPath const&) + 152 (EventDispatcher.cpp:91)
5   WebCore                         0x00000001986b8128 WebCore::EventDispatcher::dispatchEvent(WebCore::Node&, WebCore::Event&) + 700 (EventDispatcher.cpp:159)
6   WebCore                         0x000000019886dd90 WebCore::HTMLMediaElement::dispatchEvent(WebCore::Event&) + 192 (HTMLMediaElement.cpp:5763)
7   WebCore                         0x00000001986c0780 WebCore::GenericEventQueue::dispatchOneEvent() + 168 (GenericEventQueue.cpp:68)
8   WebCore                         0x0000000198b6f918 WebCore::TaskDispatcher<WebCore::Timer>::sharedTimerFired() + 204 (Function.h:56)
9   WebCore                         0x0000000198b8cec0 WebCore::ThreadTimers::sharedTimerFiredInternal() + 352 (ThreadTimers.cpp:117)
10  WebCore                         0x0000000198bd17ac WebCore::timerFired(__CFRunLoopTimer*, void*) + 28 (MainThreadSharedTimerCF.cpp:74)
11  CoreFoundation                  0x000000018f0d6bf0 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 28 (CFRunLoop.c:1830)
12  CoreFoundation                  0x000000018f0d6920 __CFRunLoopDoTimer + 864 (CFRunLoop.c:2417)
13  CoreFoundation                  0x000000018f0d6154 __CFRunLoopDoTimers + 248 (CFRunLoop.c:2564)
14  CoreFoundation                  0x000000018f0d1030 __CFRunLoopRun + 1880 (CFRunLoop.c:0)
15  CoreFoundation                  0x000000018f0d05b8 CFRunLoopRunSpecific + 436 (CFRunLoop.c:3247)
16  WebCore                         0x0000000197ef7ba4 RunWebThread(void*) + 592 (WebCoreThread.mm:612)
17  libsystem_pthread.dylib         0x000000018ed612fc _pthread_body + 128 (pthread.c:837)
18  libsystem_pthread.dylib         0x000000018ed6125c _pthread_start + 48 (pthread.c:864)
19  libsystem_pthread.dylib         0x000000018ed64d08 thread_start + 4

-

Any help would be appreciated. I have not been able to reproduce these crashes. However, we did get input from a user that a video never loaded and then the app crashed, so this could be related to memory.

Gant answered 9/10, 2018 at 18:15 Comment(5)
It uses WKWebView instead of UIWebView, which implies there's an issue with UIWebView and this library in iOS12 github.com/youtube/youtube-ios-player-helper/issues/322Darwinism
I have recently experienced an increase in crashes with a stacktrace similar to the one you posted, also using the youtube lib. Unfortunatelly I could not replicate the crashes.Crossness
Having the same issue, I was able to reproduce it by opening and closing the youtube video fullscreen multiple times. As of now the only solution seems to use the updated library which uses WKWebViewMelindamelinde
Same issues, NOT using the youtube helper libEss
I am using this as a temporary workaround, but only works for local/remote video files: github.com/nchutchind/cordova-plugin-streaming-mediaPyosis

© 2022 - 2024 — McMap. All rights reserved.