RESOLVED FIXED 181222
ASSERTION FAILED: registration in WebCore::SWServerWorker::skipWaiting()
https://bugs.webkit.org/show_bug.cgi?id=181222
Summary ASSERTION FAILED: registration in WebCore::SWServerWorker::skipWaiting()
Ryan Haddad
Reported 2018-01-02 14:52:11 PST
The following assertion failure was seen with layoutTest http/tests/workers/service/cors-image-fetch.html https://build.webkit.org/results/Apple%20High%20Sierra%20Debug%20WK2%20(Tests)/r226330%20(1411)/results.html ASSERTION FAILED: registration /Volumes/Data/slave/highsierra-debug/build/Source/WebCore/workers/service/server/SWServerWorker.cpp(134) : void WebCore::SWServerWorker::skipWaiting() 1 0x11aa88ecd WTFCrash 2 0x10eefd722 WebCore::SWServerWorker::skipWaiting() 3 0x10eefd6a5 WebCore::SWServerToContextConnection::skipWaiting(WTF::ObjectIdentifier<WebCore::ServiceWorkerIdentifierType>, unsigned long long) 4 0x105d0c404 void IPC::callMemberFunctionImpl<WebKit::WebSWServerToContextConnection, void (WebCore::SWServerToContextConnection::*)(WTF::ObjectIdentifier<WebCore::ServiceWorkerIdentifierType>, unsigned long long), std::__1::tuple<WTF::ObjectIdentifier<WebCore::ServiceWorkerIdentifierType>, unsigned long long>, 0ul, 1ul>(WebKit::WebSWServerToContextConnection*, void (WebCore::SWServerToContextConnection::*)(WTF::ObjectIdentifier<WebCore::ServiceWorkerIdentifierType>, unsigned long long), std::__1::tuple<WTF::ObjectIdentifier<WebCore::ServiceWorkerIdentifierType>, unsigned long long>&&, std::__1::integer_sequence<unsigned long, 0ul, 1ul>) 5 0x105d0c1a0 void IPC::callMemberFunction<WebKit::WebSWServerToContextConnection, void (WebCore::SWServerToContextConnection::*)(WTF::ObjectIdentifier<WebCore::ServiceWorkerIdentifierType>, unsigned long long), std::__1::tuple<WTF::ObjectIdentifier<WebCore::ServiceWorkerIdentifierType>, unsigned long long>, std::__1::integer_sequence<unsigned long, 0ul, 1ul> >(std::__1::tuple<WTF::ObjectIdentifier<WebCore::ServiceWorkerIdentifierType>, unsigned long long>&&, WebKit::WebSWServerToContextConnection*, void (WebCore::SWServerToContextConnection::*)(WTF::ObjectIdentifier<WebCore::ServiceWorkerIdentifierType>, unsigned long long)) 6 0x105d0aa0f void IPC::handleMessage<Messages::WebSWServerToContextConnection::SkipWaiting, WebKit::WebSWServerToContextConnection, void (WebCore::SWServerToContextConnection::*)(WTF::ObjectIdentifier<WebCore::ServiceWorkerIdentifierType>, unsigned long long)>(IPC::Decoder&, WebKit::WebSWServerToContextConnection*, void (WebCore::SWServerToContextConnection::*)(WTF::ObjectIdentifier<WebCore::ServiceWorkerIdentifierType>, unsigned long long)) 7 0x105d09fd2 WebKit::WebSWServerToContextConnection::didReceiveMessage(IPC::Connection&, IPC::Decoder&) 8 0x1055a4484 WebKit::StorageToWebProcessConnection::didReceiveMessage(IPC::Connection&, IPC::Decoder&) 9 0x10501dbc3 IPC::Connection::dispatchMessage(IPC::Decoder&) 10 0x105013248 IPC::Connection::dispatchMessage(std::__1::unique_ptr<IPC::Decoder, std::__1::default_delete<IPC::Decoder> >) 11 0x10501e1ca IPC::Connection::dispatchOneMessage() 12 0x10503673d IPC::Connection::enqueueIncomingMessage(std::__1::unique_ptr<IPC::Decoder, std::__1::default_delete<IPC::Decoder> >)::$_14::operator()() 13 0x105036699 WTF::Function<void ()>::CallableWrapper<IPC::Connection::enqueueIncomingMessage(std::__1::unique_ptr<IPC::Decoder, std::__1::default_delete<IPC::Decoder> >)::$_14>::call() 14 0x11aaa501b WTF::Function<void ()>::operator()() const 15 0x11aae9e73 WTF::RunLoop::performWork() 16 0x11aaea714 WTF::RunLoop::performWork(void*) 17 0x7fff30bfb711 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ 18 0x7fff30cb339c __CFRunLoopDoSource0 19 0x7fff30bde700 __CFRunLoopDoSources0 20 0x7fff30bddb7d __CFRunLoopRun 21 0x7fff30bdd3d7 CFRunLoopRunSpecific 22 0x7fff32cd7b76 -[NSRunLoop(NSRunLoop) runMode:beforeDate:] 23 0x7fff32cd7a4e -[NSRunLoop(NSRunLoop) run] 24 0x7fff5879f403 _xpc_objc_main 25 0x7fff5879e082 xpc_main 26 0x104ed812b main 27 0x7fff584d2115 start
Attachments
Patch (2.90 KB, patch)
2018-01-11 12:17 PST, Chris Dumez
no flags
Patch (2.98 KB, patch)
2018-01-11 12:51 PST, Chris Dumez
no flags
Radar WebKit Bug Importer
Comment 1 2018-01-05 19:20:42 PST
Ryan Haddad
Comment 2 2018-01-10 17:45:39 PST
Alexey Proskuryakov
Comment 3 2018-01-11 09:11:51 PST
Ryan Haddad
Comment 4 2018-01-11 11:06:44 PST
(In reply to Ryan Haddad from comment #2) > Skipped test in https://trac.webkit.org/r226749 This crash is still seen with http/tests/workers/service/postmessage-after-sw-process-crash.https.html: https://build.webkit.org/results/Apple%20High%20Sierra%20Debug%20WK2%20(Tests)/r226697%20(1530)/results.html So I either skipped the wrong test, or this affects multiple tests. Chris, do you have any idea what is going on here?
Chris Dumez
Comment 5 2018-01-11 12:09:58 PST
(In reply to Ryan Haddad from comment #4) > (In reply to Ryan Haddad from comment #2) > > Skipped test in https://trac.webkit.org/r226749 > > This crash is still seen with > http/tests/workers/service/postmessage-after-sw-process-crash.https.html: > https://build.webkit.org/results/ > Apple%20High%20Sierra%20Debug%20WK2%20(Tests)/r226697%20(1530)/results.html > > So I either skipped the wrong test, or this affects multiple tests. > > Chris, do you have any idea what is going on here? This is next on my TODO list. I'll figure it out shortly. No worries.
Chris Dumez
Comment 6 2018-01-11 12:17:17 PST
youenn fablet
Comment 7 2018-01-11 12:44:40 PST
Comment on attachment 331092 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=331092&action=review > Source/WebCore/ChangeLog:11 > + period without having a registration, while it is terminating. Would there be an easy way to know that it is either terminating or it has a registration?
Chris Dumez
Comment 8 2018-01-11 12:46:10 PST
Comment on attachment 331092 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=331092&action=review >> Source/WebCore/ChangeLog:11 >> + period without having a registration, while it is terminating. > > Would there be an easy way to know that it is either terminating or it has a registration? In the case where there is no registration, I can ASSERT(isTerminating()); Would you like me to do so?
youenn fablet
Comment 9 2018-01-11 12:48:23 PST
(In reply to Chris Dumez from comment #8) > Comment on attachment 331092 [details] > Patch > > View in context: > https://bugs.webkit.org/attachment.cgi?id=331092&action=review > > >> Source/WebCore/ChangeLog:11 > >> + period without having a registration, while it is terminating. > > > > Would there be an easy way to know that it is either terminating or it has a registration? > > In the case where there is no registration, I can ASSERT(isTerminating()); > > Would you like me to do so? Seems cheap and would validate our model is correct. I would go for it.
Chris Dumez
Comment 10 2018-01-11 12:51:22 PST
WebKit Commit Bot
Comment 11 2018-01-11 15:41:35 PST
Comment on attachment 331099 [details] Patch Clearing flags on attachment: 331099 Committed r226813: <https://trac.webkit.org/changeset/226813>
WebKit Commit Bot
Comment 12 2018-01-11 15:41:37 PST
All reviewed patches have been landed. Closing bug.
Note You need to log in before you can comment on or make changes to this bug.