Crash when answering notification permission request after navigating: 100 com.apple.WebKit: WebCore::SecurityOriginHash::hash + 34 <== 100 com.apple.WebKit: WTF::KeyValuePair<WTF::RefPtr<WebCore::SecurityOrigin>, unsigned long long>* WTF::HashTable<WTF::RefPtr<WebCore::SecurityOrigin>, WTF::KeyValuePair<WTF::RefPtr<WebCore::SecurityOrigin>, unsigned long long>, WTF::KeyValuePairKeyExtractor<WTF::KeyValuePair<WTF::RefPtr<WebCore::SecurityOrigin>, unsigned long long> >, WebCore::SecurityOriginHash, WTF::KeyValuePairHashTraits<WTF::HashTraits<WTF::RefPtr<WebCore::SecurityOrigin> >, WTF::HashTraits<unsigned long long> >, WTF::HashTraits<WTF::RefPtr<WebCore::SecurityOrigin> > >::lookup<WTF::IdentityHashTranslator<WebCore::SecurityOriginHash>, WTF::RefPtr<WebCore::SecurityOrigin> > + 36 100 com.apple.WebKit: WTF::HashTableIterator<WTF::RefPtr<WebCore::SecurityOrigin>, WTF::KeyValuePair<WTF::RefPtr<WebCore::SecurityOrigin>, unsigned long long>, WTF::KeyValuePairKeyExtractor<WTF::KeyValuePair<WTF::RefPtr<WebCore::SecurityOrigin>, unsigned long long> >, WebCore::SecurityOriginHash, WTF::KeyValuePairHashTraits<WTF::HashTraits<WTF::RefPtr<WebCore::SecurityOrigin> >, WTF::HashTraits<unsigned long long> >, WTF::HashTraits<WTF::RefPtr<WebCore::SecurityOrigin> > > WTF::HashTable<WTF::RefPtr<WebCore::SecurityOrigin>, WTF::KeyValuePair<WTF::RefPtr<WebCore::SecurityOrigin>, unsigned long long>, WTF::KeyValuePairKeyExtractor<WTF::KeyValuePair<WTF::RefPtr<WebCore::SecurityOrigin>, unsigned long long> >, WebCore::SecurityOriginHash, WTF::KeyValuePairHashTraits<WTF::HashTraits<WTF::RefPtr<WebCore::SecurityOrigin> >, WTF::HashTraits<unsigned long long> >, WTF::HashTraits<WTF::RefPtr<WebCore::SecurityOrigin> > >::find<WTF::IdentityHashTranslator<WebCore::SecurityOriginHash>, WTF::RefPtr<WebCore::SecurityOrigin> > + 23 100 com.apple.WebKit: WTF::HashMap<WTF::RefPtr<WebCore::SecurityOrigin>, unsigned long long, WebCore::SecurityOriginHash, WTF::HashTraits<WTF::RefPtr<WebCore::SecurityOrigin> >, WTF::HashTraits<unsigned long long> >::remove + 14 100 com.apple.WebKit: WebKit::NotificationPermissionRequestManager::didReceiveNotificationPermissionDecision + 74 100 com.apple.WebKit: void IPC::handleMessage<Messages::WebPage::DidReceiveNotificationPermissionDecision, WebKit::WebPage, void + 78 51 com.apple.WebKit: WebKit::WebPage::didReceiveWebPageMessage + 10220 | 51 com.apple.WebKit: IPC::MessageReceiverMap::dispatchMessage + 120 | 51 com.apple.WebKit: WebKit::WebProcess::didReceiveMessage + 28 This is because the notification permission request is cancelled upon navigating. When the user responds to the permission request afterward, it looks for the request ID in the HashMap and the code wrongly assumes the ID exists in the HashMap. Radar: <rdar://problem/18921122>
Created attachment 242886 [details] Patch
Comment on attachment 242886 [details] Patch r=me
Comment on attachment 242886 [details] Patch Clearing flags on attachment: 242886 Committed r177033: <http://trac.webkit.org/changeset/177033>
All reviewed patches have been landed. Closing bug.