Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

UIWebView iOS 5 : WebKit/JavaScriptCore crash

I'm trying to include a UIWebView based browser in my iPad application. It takes some time, which makes it hard to debug, but the app finally crashes, always on the same spot: the WebThread, on the JavaScriptCore WTF::StringImpl::hash() function. It produces EXC_BAD_ACCESS (SIGSEGV), KERN_INVALID_ADDRESS at 0x00000001.

The UIWebView is inside a view controller managed by another view controller (container) in a stack-like fashion. I'm only keeping four or less of those browsers in memory.

Anything about the crash log, or about what might be causing the crash?

This is the crash log of the web thread:

Thread 2 name:  WebThread
Thread 2 Crashed:
0   JavaScriptCore                  0x32a97d46 WTF::StringImpl::hash() const + 42
1   JavaScriptCore                  0x32a97c6a WTF::HashTable<WTF::StringImpl*, WTF::StringImpl*, WTF::IdentityExtractor<WTF::StringImpl*>, WTF::StringHash, WTF::HashTraits<WTF::StringImpl*>, WTF::HashTraits<WTF::StringImpl*> >::lookupForWriting(WTF::StringImpl* const&) + 18
2   JavaScriptCore                  0x32a9b028 std::pair<WTF::HashTableIterator<WTF::StringImpl*, WTF::StringImpl*, WTF::IdentityExtractor<WTF::StringImpl*>, WTF::StringHash, WTF::HashTraits<WTF::StringImpl*>, WTF::HashTraits<WTF::StringImpl*> >, bool> WTF::HashTable<WTF::StringImpl*, WTF::StringImpl*, WTF::IdentityExtractor<WTF::StringImpl*>, WTF::StringHash, WTF::HashTraits<WTF::StringImpl*>, WTF::HashTraits<WTF::StringImpl*> >::add<WTF::StringImpl*, WTF::StringImpl*, WTF::IdentityHashTranslator<WTF::StringImpl*, WTF::StringImpl*, WTF::StringHash> >(WTF::StringImpl* const&, WTF::StringImpl* const&) + 448
3   JavaScriptCore                  0x32a9ae30 WTF::AtomicString::addSlowCase(WTF::StringImpl*) + 96
4   WebCore                         0x31bade0c WebCore::AtomicHTMLToken::initializeAttributes(WTF::Vector<WebCore::HTMLToken::Attribute, 10ul> const&) + 232
5   WebCore                         0x31b88076 WebCore::AtomicHTMLToken::AtomicHTMLToken(WebCore::HTMLToken&) + 302
6   WebCore                         0x31b87eae WebCore::HTMLTreeBuilder::constructTreeFromToken(WebCore::HTMLToken&) + 14
7   WebCore                         0x31b7d07e WebCore::HTMLDocumentParser::pumpTokenizer(WebCore::HTMLDocumentParser::SynchronousMode) + 150
8   WebCore                         0x31bee29a WebCore::HTMLDocumentParser::resumeParsingAfterScriptExecution() + 50
9   WebCore                         0x31bc87e6 WebCore::HTMLDocumentParser::notifyFinished(WebCore::CachedResource*) + 78
10  WebCore                         0x31bc7448 WebCore::CachedResource::checkNotify() + 40
11  WebCore                         0x31bc7308 WebCore::CachedScript::data(WTF::PassRefPtr<WebCore::SharedBuffer>, bool) + 84
12  WebCore                         0x31bc7240 WebCore::CachedResourceRequest::didFinishLoading(WebCore::SubresourceLoader*, double) + 120
13  WebCore                         0x31bc715e WebCore::SubresourceLoader::didFinishLoading(double) + 158
14  WebCore                         0x31bc58c2 _ZN7WebCoreL16didFinishLoadingEP16_CFURLConnectionPKv + 46
15  CFNetwork                       0x347737ee URLConnectionClient::_clientDidFinishLoading(URLConnectionClient::ClientConnectionEventQueue*) + 186
16  CFNetwork                       0x3476849e URLConnectionClient::ClientConnectionEventQueue::processAllEventsAndConsumePayload(XConnectionEventInfo<XClientEvent, XClientEventParams>*, long) + 418
17  CFNetwork                       0x3476819c URLConnectionClient::processEvents() + 100
18  CFNetwork                       0x347680d2 MultiplexerSource::perform() + 150
19  CoreFoundation                  0x313d2acc __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 8
20  CoreFoundation                  0x313d2298 __CFRunLoopDoSources0 + 208
21  CoreFoundation                  0x313d103e __CFRunLoopRun + 646
22  CoreFoundation                  0x3135449e CFRunLoopRunSpecific + 294
23  CoreFoundation                  0x31354366 CFRunLoopRunInMode + 98
24  WebCore                         0x31b74c9c _ZL12RunWebThreadPv + 396
25  libsystem_c.dylib               0x33bca72e _pthread_start + 314
26  libsystem_c.dylib               0x33bca5e8 thread_start + 0
like image 543
conra2010 Avatar asked Aug 12 '12 10:08

conra2010


1 Answers

I had the same problem, spent the whole day... There were a LOT of different WebKit errors like these. Finally, I got it: this was a multi-threaded issue! I created the WebView from thread 1, then tried to modify its contents by means of JS functions in thread 2...

The simple performSelectorOnMainThread:withObject:waitUntilDone: fixed the problem!

Maybe this will help someone.

like image 54
Dmitry Isaev Avatar answered Nov 24 '22 01:11

Dmitry Isaev