Ios UIWebView崩溃:OpenGLES-glTexImage2D

Ios UIWebView崩溃:OpenGLES-glTexImage2D,ios,opengl-es,uiwebview,webgl,Ios,Opengl Es,Uiwebview,Webgl,我有一个基于UIWebView的iOS应用程序,它最近开始大量崩溃。我坚信崩溃是由于网络内容发生了变化(最坏的情况,但最有可能的情况是,这是第三方横幅广告),因为崩溃报告在同一天开始出现在我的iOS应用程序的所有版本中,突然从0崩溃到几百崩溃 以下是iOS9上的崩溃堆栈跟踪: Thread : Crashed: WebThread 0 libmetal_timestamp.dylib 0x18cf2df08 (Missing) 1 libmetal_timestamp.dylib

我有一个基于
UIWebView
的iOS应用程序,它最近开始大量崩溃。我坚信崩溃是由于网络内容发生了变化(最坏的情况,但最有可能的情况是,这是第三方横幅广告),因为崩溃报告在同一天开始出现在我的iOS应用程序的所有版本中,突然从0崩溃到几百崩溃

以下是iOS9上的崩溃堆栈跟踪:

Thread : Crashed: WebThread
0  libmetal_timestamp.dylib       0x18cf2df08 (Missing)
1  libmetal_timestamp.dylib       0x18cf2eec4 (Missing)
2  libmetal_timestamp.dylib       0x18cf335ac (Missing)
3  MobileCoreServices             0x185c941a8 (Missing)
4  MobileCoreServices             0x185bf3428 (Missing)
5  OpenGLES                       0x185ccea9c glTexImage2D + 108
6  WebCore                        0x1946e3da8 WebCore::GraphicsContext3D::texImage2D(unsigned int, int, unsigned int, int, int, int, unsigned int, unsigned int, void const*) + 60
7  WebCore                        0x194ffb37c WebCore::WebGLRenderingContextBase::texImage2DBase(unsigned int, int, unsigned int, int, int, int, unsigned int, unsigned int, void const*, int&) + 160
8  WebCore                        0x194ffbb84 WebCore::WebGLRenderingContextBase::texImage2D(unsigned int, int, unsigned int, int, int, int, unsigned int, unsigned int, JSC::ArrayBufferView*, int&) + 784
9  WebCore                        0x194b80ba4 WebCore::jsWebGLRenderingContextBasePrototypeFunctionTexImage2D(JSC::ExecState*) + 2880
10 JavaScriptCore                 0x1842422f0 llint_entry + 25056
11 JavaScriptCore                 0x184241d10 llint_entry + 23552
12 JavaScriptCore                 0x184241d10 llint_entry + 23552
13 JavaScriptCore                 0x184241d10 llint_entry + 23552
14 JavaScriptCore                 0x18423bef8 vmEntryToJavaScript + 312
15 JavaScriptCore                 0x184168c48 JSC::JITCode::execute(JSC::VM*, JSC::ProtoCallFrame*) + 180
16 JavaScriptCore                 0x183e02108 JSC::Interpreter::executeCall(JSC::ExecState*, JSC::JSObject*, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&) + 400
17 JavaScriptCore                 0x183eb41bc JSC::boundFunctionCall(JSC::ExecState*) + 512
18 JavaScriptCore                 0x18423c080 vmEntryToNative + 320
19 JavaScriptCore                 0x183e0214c JSC::Interpreter::executeCall(JSC::ExecState*, JSC::JSObject*, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&) + 468
20 JavaScriptCore                 0x183f117dc JSC::call(JSC::ExecState*, JSC::JSValue, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&, WTF::NakedPtr<JSC::Exception>&) + 80
21 WebCore                        0x1943b8ecc WebCore::JSCallbackData::invokeCallback(JSC::JSValue, JSC::MarkedArgumentBuffer&, bool*) + 580
22 WebCore                        0x194a60434 WebCore::JSRequestAnimationFrameCallback::handleEvent(double) + 196
23 WebCore                        0x194dd634c WebCore::ScriptedAnimationController::serviceScriptedAnimations(double) + 424
24 WebCore                        0x194575c48 WebCore::DisplayRefreshMonitor::displayDidRefresh() + 428
25 QuartzCore                     0x187567840 CA::Display::DisplayLinkItem::dispatch() + 40
26 QuartzCore                     0x1875676f4 CA::Display::DisplayLink::dispatch_items(unsigned long long, unsigned long long, unsigned long long) + 424
27 IOKit                          0x183a262f8 IODispatchCalloutFromCFMessage + 372
28 CoreFoundation                 0x18272e840 __CFMachPortPerform + 180
29 CoreFoundation                 0x182744c7c __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 56
30 CoreFoundation                 0x1827443b4 __CFRunLoopDoSource1 + 436
31 CoreFoundation                 0x18274210c __CFRunLoopRun + 1800
32 CoreFoundation                 0x182670ca0 CFRunLoopRunSpecific + 384
33 WebCore                        0x19425a54c RunWebThread(void*) + 456
34 libsystem_pthread.dylib        0x197c83b28 _pthread_body + 156
35 libsystem_pthread.dylib        0x197c83a8c _pthread_body + 154
36 libsystem_pthread.dylib        0x197c81028 thread_start + 4
线程:崩溃:WebThread
0 libmetal_timestamp.dylib 0x18cf2df08(缺少)
1 libmetal_timestamp.dylib 0x18cf2eec4(缺失)
2 libmetal_timestamp.dylib 0x18cf335ac(缺失)
3移动预留0x185c941a8(缺失)
4移动预留0x185bf3428(缺失)
5个开口0x185ccea9c glTexImage2D+108
6 WebCore 0x1946e3da8 WebCore::GraphicsContext3D::texImage2D(无符号整数、整数、无符号整数、整数、整数、整数、无符号整数、无符号整数、无符号整数、空常量*)+60
7 WebCore 0x194ffb37c WebCore::WebGLRenderingContextBase::texImage2DBase(无符号int,int,unsigned int,int,int,int,int,unsigned int,unsigned int,unsigned int,unsigned int,void const*,int&)+160
8 WebCore 0x194ffbb84 WebCore::WebGLRenderingContextBase::texImage2D(无符号int,int,unsigned int,int,int,int,unsigned int,unsigned int,unsigned int,unsigned int,JSC::ArrayBufferView*,int&)+784
9 WebCore 0x194b80ba4 WebCore::jsWebGLRenderingContextBasePrototypeFunctionTexImage2D(JSC::ExecState*)+2880
10 JavaScriptCore 0x1842422f0 llint_条目+25056
11 JavaScriptCore 0x184241d10 llint_条目+23552
12 JavaScriptCore 0x184241d10 llint_条目+23552
13 JavaScriptCore 0x184241d10 llint_条目+23552
14 JavaScriptCore 0x18423bef8 vmEntryToJavaScript+312
15 JavaScriptCore 0x184168c48 JSC::JITCode::execute(JSC::VM*,JSC::ProtoCallFrame*)+180
16 JavaScriptCore 0x183e02108 JSC::解释器::executeCall(JSC::ExecState*,JSC::JSObject*,JSC::CallType,JSC::CallData常量&,JSC::JSC::JSValue,JSC::ArgList常量&+400
17 JavaScriptCore 0x183eb41bc JSC::boundFunctionCall(JSC::ExecState*)+512
18 JavaScriptCore 0x18423c080 vmEntryToNative+320
19 JavaScriptCore 0x183e0214c JSC::解释器::executeCall(JSC::ExecState*,JSC::JSObject*,JSC::CallType,JSC::CallData常量&,JSC::JSC::JSValue,JSC::ArgList常量&+468
20 JavaScriptCore 0x183f117dc JSC::call(JSC::ExecState*,JSC::JSValue,JSC::CallType,JSC::CallData常量&,JSC::JSValue,JSC::ArgList常量&,WTF::NakedPtr&)+80
21 WebCore 0x1943b8ecc WebCore::JSCallbackData::invokeCallback(JSC::JSValue,JSC::MarkedArgumentBuffer&,bool*)+580
22 WebCore 0x194a60434 WebCore::JSRequestAnimationFrameCallback::handleEvent(双精度)+196
23 WebCore 0x194dd634c WebCore::ScriptedAnimationController::serviceScriptedAnimations(双精度)+424
24网络存储0x194575c48网络存储::DisplayRefreshMonitor::displayDidRefresh()+428
25 QuartzCore 0x187567840 CA::Display::DisplayLinkItem::dispatch()+40
26 QuartzCore 0x1875676f4 CA::Display::DisplayLink::分派_项(无符号长、无符号长、无符号长)+424
27 IOKit 0x183a262f8 IOISPAChCallout fromCFMessage+372
28芯基础0x18272e840 _uCFMACHPORT执行+180
29 CoreFoundation 0x182744c7c运行循环正在调用源1执行功能
30 CoreFoundation 0x1827443b4\uu CFRunLoopDoSource1+436
31 CoreFoundation 0x18274210c_u CFRunLoopRun+1800
32芯基础0x182670ca0 CFRUNLOOPSCRUN+384
33网络核心0x19425a54c运行网络线程(无效*)+456
34 libsystem_pthread.dylib 0x197c83b28_pthread_body+156
35 libsystem_pthread.dylib 0x197c83a8c_pthread_body+154
36 libsystem_pthread.dylib 0x197c81028 thread_start+4
在iOS8上,它崩溃时的堆栈跟踪略有不同,但非常相似。iOS8和iOS9崩溃同时开始,所以毫无疑问是同一件事

鉴于崩溃报告中的
OpenGLES
引用,我怀疑它与涉及硬件的DOM呈现有关。有没有其他人开发了一个混合web应用程序并看到了这些崩溃?是否有任何特定的CSS转换/转换导致应用程序以这种方式崩溃


此外,还有一个对
WebGLRenderingContextBase
的引用,这是否意味着它一定是由网页上的实际
WebGL
引起的,或者它仍然可能仅仅起源于非3D CSS样式?

我相信webkit使用OpenGL纹理进行图像合成。。。看起来像一个webkit bug。可能在这里的某个地方:@wcochran谢谢!好像在3030线上。你知道网页上的什么会导致这种情况吗?Crashlytics说,当应用程序出现时,它永远不会被关注(这当然是好的),但我不确定该如何使用它。我99%肯定它是WebGL。我在WebKit中使用过WebGL,我不相信任何非WebGL代码会使用
WebCore::WebGLRenderingContextBase
,至于是什么导致了它,我不知道。尝试在崩溃中捕获UIWebView的URLreport@gman好的,谢谢!我自己的代码中没有任何WebGL,但我有时会看到来自广告提供商的3D广告。我会联系他们,看看他们是否在撞车事件发生的当天就开始提供新的广告。。。