在WebThread中的iOS uiwebview崩溃
我正在寻找一些build议或帮助诊断这个我看到的崩溃。 目前,我认为这可能是一个webkit的bug,但任何事情都是可能的,所以请提供你可能有的任何见解:
事件标识符:AEB8EE37-E5D4-4975-97F4-2B2038AC225A CrashReporter注册商标:92349a05395ea832c40c49c9e48997c1d65a2371 硬件型号:iPad3,3 过程:触摸[242] path:/var/mobile/Applications/4D2CAEEE-D0F8-4BB4-989A-F8623C877C78/Touch.app/Touch 标识符:StayinFrontTouch 版本:3.2.40(3.2.40) 代码types:ARM(Native) 父进程:launchd [1] date/时间:2014年4月30日15:26:46.137 +1200 操作系统版本:iOS 7.1.1(11D201) 报告版本:104 exceptiontypes:EXC_BAD_ACCESS(SIGSEGV) exception子types:0x00000258处的KERN_INVALID_ADDRESS 由主题触发:2 线程0: 0 libsystem_kernel.dylib 0x3a2ffa58 mach_msg_trap + 20 1 libsystem_kernel.dylib 0x3a2ff854 mach_msg + 44 2 CoreFoundation 0x2f06e896 __CFRunLoopServiceMachPort + 150 3 CoreFoundation 0x2f06d002 __CFRunLoopRun + 850 4 CoreFoundation 0x2efd7f0a CFRunLoopRunSpecific + 518 5 CoreFoundation 0x2efd7cee CFRunLoopRunInMode + 102 6 GraphicsServices 0x33f0a65e GSEventRunModal + 134 7 UIKit 0x31923168 UIApplicationMain + 1132 8触摸0x000c064a 0xbd000 + 13898 9触摸0x000bf854 0xbd000 + 10324 主题1: 0 libsystem_kernel.dylib 0x3a2ff808 kevent64 + 24 1 libdispatch.dylib 0x3a241078 _dispatch_mgr_invoke + 228 2 libdispatch.dylib 0x3a240dfe _dispatch_mgr_thread $ VARIANT $ mp + 34 线程2名称:WebThread 线程2崩溃: 0 WebCore 0x37584302 WebCore :: SubresourceLoader :: didReceiveResponse(WebCore :: ResourceResponse const&)+ 26 1 WebCore 0x377f751c WebCore :: DocumentLoader :: substituteResourceDeliveryTimerFired(WebCore :: Timer *)+ 212 2 WebCore 0x374ad3f4 WebCore :: ThreadTimers :: sharedTimerFiredInternal()+ 132 3 WebCore 0x374ad346 WebCore :: timerFired(__ CFRunLoopTimer *,void *)+ 22 4 CoreFoundation 0x2f06f1b4 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 12 5 CoreFoundation 0x2f06edca __CFRunLoopDoTimer + 778 6 CoreFoundation 0x2f06d166 __CFRunLoopRun + 1206 7 CoreFoundation 0x2efd7f0a CFRunLoopRunSpecific + 518 8 CoreFoundation 0x2efd7cee CFRunLoopRunInMode + 102 9 WebCore 0x3753a116 RunWebThread(void *)+ 414 10 libsystem_pthread.dylib 0x3a37b916 _pthread_body + 138 11 libsystem_pthread.dylib 0x3a37b886 _pthread_start + 98 12 libsystem_pthread.dylib 0x3a379aa0 thread_start + 4 线程3名称:com.apple.NSURLConnectionLoader 主题3: 0 libsystem_kernel.dylib 0x3a2ffa58 mach_msg_trap + 20 1 libsystem_kernel.dylib 0x3a2ff854 mach_msg + 44 2 CoreFoundation 0x2f06e896 __CFRunLoopServiceMachPort + 150 3 CoreFoundation 0x2f06cfbc __CFRunLoopRun + 780 4 CoreFoundation 0x2efd7f0a CFRunLoopRunSpecific + 518 5 CoreFoundation 0x2efd7cee CFRunLoopRunInMode + 102 6基础0x2fa17082 + [NSURLConnection(Loader)_resourceLoadLoop:] + 314 7基金会0x2fa8ca5a __NSThread__main__ + 1058 8 libsystem_pthread.dylib 0x3a37b916 _pthread_body + 138 9 libsystem_pthread.dylib 0x3a37b886 _pthread_start + 98 10 libsystem_pthread.dylib 0x3a379aa0 thread_start + 4 主题4: 0 libsystem_kernel.dylib 0x3a2ffa58 mach_msg_trap + 20 1 libsystem_kernel.dylib 0x3a2ff854 mach_msg + 44 2 CoreFoundation 0x2f06e896 __CFRunLoopServiceMachPort + 150 3 CoreFoundation 0x2f06cfbc __CFRunLoopRun + 780 4 CoreFoundation 0x2efd7f0a CFRunLoopRunSpecific + 518 5 CoreFoundation 0x2efd7cee CFRunLoopRunInMode + 102 6 libAVFAudio.dylib 0x2e04f44c GenericRunLoopThread :: Entry(void *)+ 124 7 libAVFAudio.dylib 0x2e0437bc CAPThread :: Entry(CAPThread *)+ 176 8 libsystem_pthread.dylib 0x3a37b916 _pthread_body + 138 9 libsystem_pthread.dylib 0x3a37b886 _pthread_start + 98 10 libsystem_pthread.dylib 0x3a379aa0 thread_start + 4 线程5名称:JavaScriptCore :: BlockFree 主题5: 0 libsystem_kernel.dylib 0x3a311f2c __psynch_cvwait + 24 1 libsystem_pthread.dylib 0x3a37af22 _pthread_cond_wait + 518 2 libsystem_pthread.dylib 0x3a37bd60 pthread_cond_wait + 36 3 JavaScriptCore 0x30004ee4 JSC :: BlockAllocator :: blockFreeingThreadMain()+ 204 4 JavaScriptCore 0x30002538 WTF :: wtfThreadEntryPoint(void *)+ 12 5 libsystem_pthread.dylib 0x3a37b916 _pthread_body + 138 6 libsystem_pthread.dylib 0x3a37b886 _pthread_start + 98 7 libsystem_pthread.dylib 0x3a379aa0 thread_start + 4 线程6名称:JavaScriptCore ::标记 主题6: 0 libsystem_kernel.dylib 0x3a311f2c __psynch_cvwait + 24 1 libsystem_pthread.dylib 0x3a37af22 _pthread_cond_wait + 518 2 libsystem_pthread.dylib 0x3a37bd60 pthread_cond_wait + 36 3 JavaScriptCore 0x301a0406 JSC :: GCThread :: waitForNextPhase()+ 74 4 JavaScriptCore 0x301a0460 JSC :: GCThread :: gcThreadMain()+ 48 5 JavaScriptCore 0x30002538 WTF :: wtfThreadEntryPoint(void *)+ 12 6 libsystem_pthread.dylib 0x3a37b916 _pthread_body + 138 7 libsystem_pthread.dylib 0x3a37b886 _pthread_start + 98 8 libsystem_pthread.dylib 0x3a379aa0 thread_start + 4 线程7名称:WebCore:CFNetwork Loader 主题7: 0 libsystem_kernel.dylib 0x3a2ffa58 mach_msg_trap + 20 1 libsystem_kernel.dylib 0x3a2ff854 mach_msg + 44 2 CoreFoundation 0x2f06e896 __CFRunLoopServiceMachPort + 150 3 CoreFoundation 0x2f06cfbc __CFRunLoopRun + 780 4 CoreFoundation 0x2efd7f0a CFRunLoopRunSpecific + 518 5 CoreFoundation 0x2efd7cee CFRunLoopRunInMode + 102 6 WebCore 0x37582b12 WebCore :: runLoaderThread(void *)+ 250 7 JavaScriptCore 0x30002538 WTF :: wtfThreadEntryPoint(void *)+ 12 8 libsystem_pthread.dylib 0x3a37b916 _pthread_body + 138 9 libsystem_pthread.dylib 0x3a37b886 _pthread_start + 98 10 libsystem_pthread.dylib 0x3a379aa0 thread_start + 4 线程8名称:com.apple.CFSocket.private 线程8: 0 libsystem_kernel.dylib 0x3a312434 __select + 20 1 CoreFoundation 0x2f072758 __CFSocketManager + 480 2 libsystem_pthread.dylib 0x3a37b916 _pthread_body + 138 3 libsystem_pthread.dylib 0x3a37b886 _pthread_start + 98 4 libsystem_pthread.dylib 0x3a379aa0 thread_start + 4 线程9名称:WebCore:LocalStorage 主题9: 0 libsystem_kernel.dylib 0x3a311f2c __psynch_cvwait + 24 1 libsystem_pthread.dylib 0x3a37af22 _pthread_cond_wait + 518 2 libsystem_pthread.dylib 0x3a37bd60 pthread_cond_wait + 36 3 JavaScriptCore 0x30005012 WTF :: ThreadCondition :: timedWait(WTF :: Mutex&,double)+ 58 (WTF :: MessageQueueWaitResult&,bool(&)(WTF :: Function *),double)+ 104 WebCore 0x3766cf2c WTF :: PassOwnPtr> WTF :: MessageQueue> :: waitForMessageFilteredWithTimeout *) 5 WebCore 0x3766ceb2 WebCore :: StorageThread :: threadEntryPoint()+ 162 6 JavaScriptCore 0x30002538 WTF :: wtfThreadEntryPoint(void *)+ 12 7 libsystem_pthread.dylib 0x3a37b916 _pthread_body + 138 8 libsystem_pthread.dylib 0x3a37b886 _pthread_start + 98 9 libsystem_pthread.dylib 0x3a379aa0 thread_start + 4 主题10: 0 libsystem_kernel.dylib 0x3a312c70 __workq_kernreturn + 8 1 libsystem_pthread.dylib 0x3a379bda _pthread_wqthread + 306 2 libsystem_pthread.dylib 0x3a379a94 start_wqthread + 4 主题11: 0 libsystem_kernel.dylib 0x3a312c70 __workq_kernreturn + 8 1 libsystem_pthread.dylib 0x3a379bda _pthread_wqthread + 306 2 libsystem_pthread.dylib 0x3a379a94 start_wqthread + 4 主题12: 0 libsystem_kernel.dylib 0x3a312c70 __workq_kernreturn + 8 1 libsystem_pthread.dylib 0x3a379bda _pthread_wqthread + 306 2 libsystem_pthread.dylib 0x3a379a94 start_wqthread + 4 主题13: 0 libsystem_kernel.dylib 0x3a312c70 __workq_kernreturn + 8 1 libsystem_pthread.dylib 0x3a379bda _pthread_wqthread + 306 2 libsystem_pthread.dylib 0x3a379a94 start_wqthread + 4 主题14: 0 libsystem_kernel.dylib 0x3a312c70 __workq_kernreturn + 8 1 libsystem_pthread.dylib 0x3a379bda _pthread_wqthread + 306 2 libsystem_pthread.dylib 0x3a379a94 start_wqthread + 4 主题15: 0 libsystem_kernel.dylib 0x3a312c70 __workq_kernreturn + 8 1 libsystem_pthread.dylib 0x3a379bda _pthread_wqthread + 306 2 libsystem_pthread.dylib 0x3a379a94 start_wqthread + 4 线程2与ARM线程状态(32位)崩溃: r0:0x00000000 r1:0x04ee0238 r2:0x375842e9 r3:0x019cb6b8 r4:0x0a916c00 r5:0x04ee0238 r6:0x0a916c00 r7:0x01bbf028 r8:0x0549ea00 r9:0x00000002 r10:0x0549e9c8 r11:0x03bc3000 ip:0x3a6c7838 sp:0x01bbf014 lr:0x377f751f pc:0x37584302 cpsr:0x20000030 二进制图像: ...
我做了一些关于堆栈跟踪的进一步调查,并在这里find了Subresourceloader的代码( https://webkit.googlesource.com/WebKit/+/master/Source/WebCore/loader/SubresourceLoader.cpp )。
我的猜测是,m_resource在这个标记为(****)的地方是NULL,导致崩溃:
void SubresourceLoader::didReceiveResponse(const ResourceResponse& response) { ASSERT(!response.isNull()); ASSERT(m_state == Initialized); // Reference the object in this method since the additional processing can do // anything including removing the last reference to this object; one example of this is 3266216. Ref<SubresourceLoader> protect(*this); if (m_resource->resourceToRevalidate()) { **** if (response.httpStatusCode() == 304) { // 304 Not modified / Use local copy // Existing resource is ok, just use it updating the expiration time. m_resource->setResponse(response); memoryCache()->revalidationSucceeded(m_resource, response); if (!reachedTerminalState()) ResourceLoader::didReceiveResponse(response); return; } // Did not get 304 response, continue as a regular resource load. memoryCache()->revalidationFailed(m_resource); } ...
如果它在重新安装后工作,那么你可以尝试做不caching的URL请求,因为我会假设会给出相同的结果:
NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:30]; [webView loadRequest:request];
我猜测资源caching出了问题。
- UIButton中的animation图像
- 当试图实例化AVAudioPlayer时,NSBundlefindmp3文件,但不是m4a
- 对多个位置进行地理编码 – 了解何时调用“所有”完成块
- iOS 7界面方向
- 我需要显示我的应用程序UIActivityViewController所有应用程序作为行动扩展(默认)
- 如何通过PhoneGap for iOS获取.ipa文件?
- 由cordova 3.4.1-0.1.0创build的xcode项目中的www文件夹不正确
- NSKeyedArchiver为UIView的子视图返回nil
- UIBarButtonItem的setBackgroundImage通过外观不适用于其他UIControlStates