4

We got crash log like this(Only crash on iOS 9):

Crashed: com.apple.main-thread EXC_BAD_ACCESS 0x00000000815fe0fd

And detail

Crashed: com.apple.main-thread
0  WebKit                         0x281aa862 std::__1::__function::__func<WebKit::WebsiteDataStore::fetchData(WebKit::WebsiteDataTypes, std::__1::function<void (WTF::Vector<WebKit::WebsiteDataRecord, 0ul, WTF::CrashOnOverflow, 16ul>)>)::$_0, std::__1::allocator<WebKit::WebsiteDataStore::fetchData(WebKit::WebsiteDataTypes, std::__1::function<void (WTF::Vector<WebKit::WebsiteDataRecord, 0ul, WTF::CrashOnOverflow, 16ul>)>)::$_0>, void (WebKit::WebsiteData)>::destroy_deallocate() + 29
1  libobjc.A.dylib                0x20a37e09 object_dispose + 20
2  WebKit                         0x2808fbaf std::__1::__function::__func<WebKit::NetworkProcessProxy::fetchWebsiteData(WebCore::SessionID, WebKit::WebsiteDataTypes, std::__1::function<void (WebKit::WebsiteData)>)::$_0, std::__1::allocator<WebKit::NetworkProcessProxy::fetchWebsiteData(WebCore::SessionID, WebKit::WebsiteDataTypes, std::__1::function<void (WebKit::WebsiteData)>)::$_0>, void (WebKit::WebsiteData)>::destroy_deallocate() + 30
3  WebKit                         0x280518d5 WTF::HashTable<unsigned long long, WTF::KeyValuePair<unsigned long long, std::__1::function<void (WebKit::WebsiteData)> >, WTF::KeyValuePairKeyExtractor<WTF::KeyValuePair<unsigned long long, std::__1::function<void (WebKit::WebsiteData)> > >, WTF::IntHash<unsigned long long>, WTF::HashMap<unsigned long long, std::__1::function<void (WebKit::WebsiteData)>, WTF::IntHash<unsigned long long>, WTF::HashTraits<unsigned long long>, WTF::HashTraits<std::__1::function<void (WebKit::WebsiteData)> > >::KeyValuePairTraits, WTF::HashTraits<unsigned long long> >::deallocateTable(WTF::KeyValuePair<unsigned long long, std::__1::function<void (WebKit::WebsiteData)> >*, unsigned int) + 48
4  WebKit                         0x2808f449 WebKit::NetworkProcessProxy::networkProcessCrashedOrFailedToLaunch() + 252
5  JavaScriptCore                 0x246f7a4f WTF::RunLoop::performWork() + 310
6  JavaScriptCore                 0x246f7ebb WTF::RunLoop::performWork(void*) + 22
7  CoreFoundation                 0x21255dff __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 14
8  CoreFoundation                 0x212559ed __CFRunLoopDoSources0 + 452
9  CoreFoundation                 0x21253d5b __CFRunLoopRun + 794
10 CoreFoundation                 0x211a3229 CFRunLoopRunSpecific + 520
11 CoreFoundation                 0x211a3015 CFRunLoopRunInMode + 108
12 GraphicsServices               0x22793ac9 GSEventRunModal + 160
13 UIKit                          0x25877189 UIApplicationMain + 144
14 Our App                         0x7187e5 main (main.m:20)
15 libdispatch.dylib              0x20e4b873 (Missing)

We use WKWebView to show some web page. And using WKUserContentController as bridge to do some call between H5 and Native.

So, how to debug this kind of crash?

I tried to read the source code of Webkit, but it is useless. I only figure out that the WebKit network process is about to exit when crash happened.

Leo
  • 24,596
  • 11
  • 71
  • 92

1 Answers1

2

We tried to reload webview when WKKit process crashed, and the crash is gone。

- (void)webViewWebContentProcessDidTerminate:(WKWebView *)webView {
    [_webView reload];
}
Leo
  • 24,596
  • 11
  • 71
  • 92