Bug 181222 - ASSERTION FAILED: registration in WebCore::SWServerWorker::skipWaiting()
Summary: ASSERTION FAILED: registration in WebCore::SWServerWorker::skipWaiting()
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: Service Workers (show other bugs)
Version: WebKit Nightly Build
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Chris Dumez
URL:
Keywords: InRadar
Depends on:
Blocks:
 
Reported: 2018-01-02 14:52 PST by Ryan Haddad
Modified: 2018-01-11 15:41 PST (History)
7 users (show)

See Also:


Attachments
Patch (2.90 KB, patch)
2018-01-11 12:17 PST, Chris Dumez
no flags Details | Formatted Diff | Diff
Patch (2.98 KB, patch)
2018-01-11 12:51 PST, Chris Dumez
no flags Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Ryan Haddad 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
Comment 1 Radar WebKit Bug Importer 2018-01-05 19:20:42 PST
<rdar://problem/36332686>
Comment 2 Ryan Haddad 2018-01-10 17:45:39 PST
Skipped test in https://trac.webkit.org/r226749
Comment 3 Alexey Proskuryakov 2018-01-11 09:11:51 PST
rdar://problem/36206497
Comment 4 Ryan Haddad 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?
Comment 5 Chris Dumez 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.
Comment 6 Chris Dumez 2018-01-11 12:17:17 PST
Created attachment 331092 [details]
Patch
Comment 7 youenn fablet 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?
Comment 8 Chris Dumez 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?
Comment 9 youenn fablet 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.
Comment 10 Chris Dumez 2018-01-11 12:51:22 PST
Created attachment 331099 [details]
Patch
Comment 11 WebKit Commit Bot 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>
Comment 12 WebKit Commit Bot 2018-01-11 15:41:37 PST
All reviewed patches have been landed.  Closing bug.