youtube / youtube-ios-player-helper

Lightweight helper library that allows iOS developers to add inline playback of YouTube videos through a WebView
Other
1.65k stars 684 forks source link

Random crash WebCore::GraphicsContext3D::reshape(int, int) #155

Open hanneskl opened 9 years ago

hanneskl commented 9 years ago

Approx. 1% of the times, my app crashes after loadWithVideoId:playerVars: in WebCore::GraphicsContext3D::reshape(int, int)

A few people are experienceing this http://stackoverflow.com/questions/29742314/youtube-embedded-player-crashed-with-gpus-returnnotpermittedkillclient-on-ios-8

Thread : Crashed: WebThread 0 libmetal_timestamp.dylib 6705782536 (Missing) 1 libmetaltimestamp.dylib 6705786564 (Missing) 2 WebCore 6831457744 WebCore::GraphicsContext3D::reshape(int, int) + 528 3 WebCore 6840935668 WebCore::WebGLRenderingContextBase::initializeNewContext() + 640 4 WebCore 6840934296 WebCore::WebGLRenderingContextBase::WebGLRenderingContextBase(WebCore::HTMLCanvasElement, WTF::PassRefPtrWebCore::GraphicsContext3D, WebCore::GraphicsContext3D::Attributes) + 516 5 WebCore 6840906856 WebCore::WebGLRenderingContext::WebGLRenderingContext(WebCore::HTMLCanvasElement, WTF::PassRefPtrWebCore::GraphicsContext3D, WebCore::GraphicsContext3D::Attributes) + 40 6 WebCore 6840932204 WebCore::WebGLRenderingContextBase::create(WebCore::HTMLCanvasElement, WebCore::WebGLContextAttributes, WTF::String const&) + 1280 7 WebCore 6828066264 WebCore::HTMLCanvasElement::getContext(WTF::String const&, WebCore::CanvasContextAttributes) + 348 8 WebCore 6828065688 WebCore::JSHTMLCanvasElement::getContext(JSC::ExecState_) + 212 9 JavaScriptCore 6558016240 llint_entry + 25056 10 JavaScriptCore 6558014836 llint_entry + 23652 11 JavaScriptCore 6558014836 llint_entry + 23652 12 JavaScriptCore 6558014836 llint_entry + 23652 13 JavaScriptCore 6558014836 llintentry + 23652 14 JavaScriptCore 6557990648 vmEntryToJavaScript + 312 15 JavaScriptCore 6557125704 JSC::JITCode::execute(JSC::VM, JSC::ProtoCallFrame) + 180 16 JavaScriptCore 6553559304 JSC::Interpreter::executeCall(JSC::ExecState, JSC::JSObject, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&) + 400 17 JavaScriptCore 6554288572 JSC::boundFunctionCall(JSC::ExecState) + 512 18 JavaScriptCore 6558016240 llint_entry + 25056 19 JavaScriptCore 6558015300 llint_entry + 24116 20 JavaScriptCore 6558014836 llint_entry + 23652 21 JavaScriptCore 6558014836 llintentry + 23652 22 JavaScriptCore 6557990648 vmEntryToJavaScript + 312 23 JavaScriptCore 6557125704 JSC::JITCode::execute(JSC::VM, JSC::ProtoCallFrame) + 180 24 JavaScriptCore 6553559304 JSC::Interpreter::executeCall(JSC::ExecState, JSC::JSObject, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&) + 400 25 JavaScriptCore 6554288572 JSC::boundFunctionCall(JSC::ExecState) + 512 26 JavaScriptCore 6558016240 llint_entry + 25056 27 JavaScriptCore 6558014836 llintentry + 23652 28 JavaScriptCore 6557990648 vmEntryToJavaScript + 312 29 JavaScriptCore 6557125704 JSC::JITCode::execute(JSC::VM, JSC::ProtoCallFrame) + 180 30 JavaScriptCore 6553559304 JSC::Interpreter::executeCall(JSC::ExecState, JSC::JSObject, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&) + 400 31 JavaScriptCore 6554288572 JSC::boundFunctionCall(JSC::ExecState) + 512 32 JavaScriptCore 6558016240 llint_entry + 25056 33 JavaScriptCore 6558014836 llintentry + 23652 34 JavaScriptCore 6557990648 vmEntryToJavaScript + 312 35 JavaScriptCore 6557125704 JSC::JITCode::execute(JSC::VM, JSC::ProtoCallFrame) + 180 36 JavaScriptCore 6553559304 JSC::Interpreter::executeCall(JSC::ExecState, JSC::JSObject, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&) + 400 37 JavaScriptCore 6554671068 JSC::call(JSC::ExecState, JSC::JSValue, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&, WTF::NakedPtrJSC::Exception&) + 80 38 WebCore 6827754464 WebCore::JSEventListener::handleEvent(WebCore::ScriptExecutionContext, WebCore::Event) + 828 39 WebCore 6830770836 WebCore::EventTarget::fireEventListeners(WebCore::Event, WebCore::EventTargetData, WTF::Vector<WebCore::RegisteredEventListener, 1ul, WTF::CrashOnOverflow, 16ul>&) + 696 40 WebCore 6826760128 WebCore::EventTarget::fireEventListeners(WebCore::Event) + 328 41 WebCore 6828099052 WebCore::EventTarget::dispatchEvent(WTF::PassRefPtrWebCore::Event) + 116 42 WebCore 6830482360 WebCore::DOMWindow::dispatchMessageEventWithOriginCheck(WebCore::SecurityOrigin, WTF::PassRefPtrWebCore::Event, WTF::PassRefPtrInspector::ScriptCallStack) + 108 43 WebCore 6830482136 WebCore::DOMWindow::postMessageTimerFired(WebCore::PostMessageTimer&) + 152 44 WebCore 6830502016 WebCore::PostMessageTimer::fired() + 28 45 WebCore 6826307996 WebCore::ThreadTimers::sharedTimerFiredInternal() + 148 46 WebCore 6826307804 WebCore::timerFired(CFRunLoopTimer, void) + 36 47 CoreFoundation 6529715260 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION + 28 48 CoreFoundation 6529714400 CFRunLoopDoTimer + 884 49 CoreFoundation 6529703924 CFRunLoopRun + 1520 50 CoreFoundation 6528847008 CFRunLoopRunSpecific + 384 51 WebCore 6826698060 RunWebThread(void*) + 456 52 libsystem_pthread.dylib 6888520488 _pthread_body + 156 53 libsystem_pthread.dylib 6888520332 _pthread_body + 154 54 libsystem_pthread.dylib 6888509480 thread_start + 4

twobitlabs commented 9 years ago

Ditto here! Stackoverflow also has a thread on this issue but no real solutions yet:

http://stackoverflow.com/questions/29742314/youtube-embedded-player-crashed-with-gpus-returnnotpermittedkillclient-on-ios-8

AnthonyMDev commented 8 years ago

No update on this from anyone yet? I'm experiencing the same issue.

erema commented 8 years ago

We have the same bug, will you fix it in the future release?

kevosauce commented 8 years ago

I'm still seeing this as well :(

arun-perk commented 8 years ago

libGPUSupportMercury.dylib
gpus_ReturnNotPermittedKillClient 3 AGXGLDriver (null) 4 WebCore WebCore::GraphicsContext3D::reshape(int, int) + 528 5 WebCore WebCore::WebGLRenderingContextBase::initializeNewContext() + 716

"Same Crash I am also facing.. Not sure but I think its render for a webview some video or image data but It is 100% sure that this has been occurred to iPone 5c or iPhone 5 or lower end devices."

helkarli commented 8 years ago

same crash here too. all ios 10 users.

mbesnili commented 7 years ago

Any progress on this issue ?

evgeniyd commented 7 years ago

This happens to me as well, even though we don't use youtube-ios-player-helper.

arun-perk commented 7 years ago

I changed something in my code. I think Crash should no more:

//Webview load

import <objc/runtime.h>

`typedef void (CallFuc)(id, SEL, BOOL); typedef BOOL (GetFuc)(id, SEL); -(BOOL)webView:(UIWebView*)view enableGL:(BOOL)bEnable { BOOL bRet = NO; do { Ivar internalVar = class_getInstanceVariable([view class], "_internal"); if (!internalVar) { NSLog(@"enable GL _internal invalid!"); break; }

    UIWebViewInternal* internalObj = object_getIvar(view, internalVar);
    Ivar browserVar = class_getInstanceVariable(object_getClass(internalObj), "browserView");
    if (!browserVar)
    {
        NSLog(@"enable GL browserView invalid!");
        break;
    }

    id webbrowser = object_getIvar(internalObj, browserVar);
    Ivar webViewVar = class_getInstanceVariable(object_getClass(webbrowser), "_webView");
    if (!webViewVar)
    {
        NSLog(@"enable GL _webView invalid!");
        break;
    }

    id webView = object_getIvar(webbrowser, webViewVar);
    if (!webView)
    {
        NSLog(@"enable GL webView obj nil!");
    }

    if(object_getClass(webView) != NSClassFromString(@"WebView"))
    {
        NSLog(@"enable GL webView not WebView!");
        break;
    }

    SEL selector = NSSelectorFromString(@"_setWebGLEnabled:");
    IMP impSet = [webView methodForSelector:selector];
    CallFuc func = (CallFuc)impSet;
    func(webView, selector, bEnable);

    SEL selectorGet = NSSelectorFromString(@"_webGLEnabled");
    IMP impGet = [webView methodForSelector:selectorGet];
    GetFuc funcGet = (GetFuc)impGet;
    BOOL val = funcGet(webView, selector);

    bRet = (val == bEnable);

}while(NO);

return bRet;

}`

call it before UIWebView loadRequest and set bEnable = NO. will resolve this crash there is also another way, monitor application backgroud and forceground event. when enter background call webView:(UIWebView*)view enableGL: NO and when forceground call it with YES

Lets do this change and try once.

huangturen commented 7 years ago

@arun-perk hope your code work!!!!!

kolorobos commented 7 years ago

@huangturen hi, did you test it?