9

UIWebViewベースのブラウザを iPad アプリケーションに含めようとしています。デバッグに時間がかかるため、デバッグが難しくなりますが、最終的にアプリは常に同じ場所 (JavaScriptCoreWTF::StringImpl::hash()関数の WebThread) でクラッシュします。生成しEXC_BAD_ACCESS (SIGSEGV), KERN_INVALID_ADDRESS at 0x00000001ます。

UIWebView、スタックのような方法で別のビュー コントローラー (コンテナー) によって管理されるビュー コントローラー内にあります。私はこれらのブラウザを 4 つ以下しかメモリに保持していません。

クラッシュ ログ、またはクラッシュの原因について何かありますか?

これは、Web スレッドのクラッシュ ログです。

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
4

2 に答える 2

11

私は同じ問題を抱えていて、一日中過ごしました...これらのようなさまざまなWebKitエラーがたくさんありました。最後に、私はそれを手に入れました:これはマルチスレッドの問題でした! スレッド 1 から WebView を作成し、スレッド 2 で JS 関数を使用してその内容を変更しようとしました...

シンプルperformSelectorOnMainThread:withObject:waitUntilDone:に問題を解決しました!

多分これは誰かを助けるでしょう。

于 2013-03-20T12:52:46.450 に答える
0

クラッシュ ログが示すように、JavaScript 関連の問題である可能性があります。読み込んでいるページに JavaScript が含まれていると思いますか? 興味深いことに、Web ページは Mobile Safari で正常に動作しますか? 問題があるのは UIWebView だけですか?

JS を変更できない場合、または Web ページが他のモバイル/デスクトップ ブラウザーまたはデバイスで正常に動作するように見える場合は、問題の再現に使用した JavaScript と共に Apple にバグを報告することをお勧めします。

于 2012-08-12T11:22:25.907 に答える