Closed Bug 1148854 Opened 9 years ago Closed 9 years ago

Assertion failure: registration, at dom/workers/ServiceWorkerManager.cpp:2374

Categories

(Core :: DOM: Core & HTML, defect)

x86
macOS
defect
Not set
normal

Tracking

()

RESOLVED FIXED
mozilla40
Tracking Status
firefox40 --- fixed

People

(Reporter: ehsan.akhgari, Assigned: ehsan.akhgari)

References

Details

Attachments

(2 files)

I sometimes get this when I'm debugging a test failure.  We cannot assert registration here, since the SW may be unregistered by the time for example an in flight network connection is made.

Assertion failure: registration, at /Users/ehsan/moz/src/dom/workers/ServiceWorkerManager.cpp:2374
#01: mozilla::dom::workers::ServiceWorkerManager::DispatchFetchEvent(nsIDocument*, nsIInterceptedChannel*, bool) (ServiceWorkerManager.cpp:2374, in XUL)
#02: nsDocShell::ChannelIntercepted(nsIInterceptedChannel*) (nsDocShell.cpp:14022, in XUL)
#03: non-virtual thunk to nsDocShell::ChannelIntercepted(nsIInterceptedChannel*) (nsDocShell.cpp:14023, in XUL)
#04: mozilla::net::InterceptedChannelBase::DoNotifyController() (InterceptedChannel.cpp:58, in XUL)
#05: mozilla::net::InterceptedChannelChrome::NotifyController() (InterceptedChannel.cpp:123, in XUL)
#06: mozilla::net::nsHttpChannel::OpenCacheEntry(bool) (nsHttpChannel.cpp:2778, in XUL)
#07: mozilla::net::nsHttpChannel::Connect() (nsHttpChannel.cpp:347, in XUL)
#08: mozilla::net::nsHttpChannel::ContinueBeginConnect() (nsHttpChannel.cpp:5054, in XUL)
#09: mozilla::net::nsHttpChannel::BeginConnect() (nsHttpChannel.cpp:4989, in XUL)
#10: mozilla::net::nsHttpChannel::OnProxyAvailable(nsICancelable*, nsIChannel*, nsIProxyInfo*, nsresult) (nsHttpChannel.cpp:5116, in XUL)
#11: non-virtual thunk to mozilla::net::nsHttpChannel::OnProxyAvailable(nsICancelable*, nsIChannel*, nsIProxyInfo*, nsresult) (nsHttpChannel.cpp:5131, in XUL)
#12: nsAsyncResolveRequest::DoCallback() (nsProtocolProxyService.cpp:257, in XUL)
#13: nsAsyncResolveRequest::OnQueryComplete(nsresult, nsCString const&, nsCString const&) (nsProtocolProxyService.cpp:227, in XUL)
#14: non-virtual thunk to nsAsyncResolveRequest::OnQueryComplete(nsresult, nsCString const&, nsCString const&) (nsProtocolProxyService.cpp:227, in XUL)
#15: ExecuteCallback::Run() (nsPACMan.cpp:82, in XUL)
#16: nsThread::ProcessNextEvent(bool, bool*) (nsThread.cpp:856, in XUL)
#17: NS_ProcessPendingEvents(nsIThread*, unsigned int) (nsThreadUtils.cpp:207, in XUL)
#18: nsBaseAppShell::NativeEventCallback() (nsBaseAppShell.cpp:99, in XUL)
#19: nsAppShell::ProcessGeckoEvents(void*) (nsAppShell.mm:377, in XUL)
#20: __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ (in CoreFoundation) + 17
#21: __CFRunLoopDoSources0 (in CoreFoundation) + 269
#22: __CFRunLoopRun (in CoreFoundation) + 927
#23: CFRunLoopRunSpecific (in CoreFoundation) + 296
#24: RunCurrentEventLoopInMode (in HIToolbox) + 235
#25: ReceiveNextEventCommon (in HIToolbox) + 179
#26: _BlockUntilNextEventMatchingListInModeWithFilter (in HIToolbox) + 71
#27: _DPSNextEvent (in AppKit) + 964
#28: -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] (in AppKit) + 194
#29: -[GeckoNSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] (nsAppShell.mm:118, in XUL)
#30: -[NSApplication run] (in AppKit) + 594
#31: nsAppShell::Run() (nsAppShell.mm:651, in XUL)
#32: nsAppStartup::Run() (nsAppStartup.cpp:281, in XUL)
#33: XREMain::XRE_mainRun() (nsAppRunner.cpp:4202, in XUL)
#34: XREMain::XRE_main(int, char**, nsXREAppData const*) (nsAppRunner.cpp:4278, in XUL)
#35: XRE_main (nsAppRunner.cpp:4498, in XUL)
#36: do_main(int, char**, nsIFile*) (nsBrowserApp.cpp:294, in firefox)
#37: main (nsBrowserApp.cpp:667, in firefox)
Summary: Assertion failure: registration, at /Users/ehsan/moz/src/dom/workers/ServiceWorkerManager.cpp:2374 → Assertion failure: registration, at dom/workers/ServiceWorkerManager.cpp:2374
Comment on attachment 8585104 [details] [diff] [review]
Relax the assertion in ServiceWorkerManager::DispatchFetchEvent

Review of attachment 8585104 [details] [diff] [review]:
-----------------------------------------------------------------

Josh, I'm having trouble understanding the error flow here. Seems like DispatchFetchEvent()'s return value is discarded and does not affect the transaction here https://dxr.mozilla.org/mozilla-central/source/netwerk/protocol/http/nsHttpChannel.cpp#2778
What will happen in such a case? Will the channel fall back to the network or get stuck forever?

ehsan, if jdm says it will fall back to network, r=me.
Attachment #8585104 - Flags: review?(nsm.nikhil) → feedback?(josh)
It won't fall back. We should make DoNotifyController call ResetInterception if ChannelIntercepted returns a failure code - http://mxr.mozilla.org/mozilla-central/source/netwerk/protocol/http/InterceptedChannel.cpp#58 .
Attachment #8585104 - Flags: feedback?(josh) → review?(josh)
Attachment #8585104 - Flags: review?(josh) → review+
Attachment #8585833 - Flags: review?(josh) → review+
https://hg.mozilla.org/mozilla-central/rev/2b3f2bd98c05
https://hg.mozilla.org/mozilla-central/rev/390a396557e1
Status: NEW → RESOLVED
Closed: 9 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla40
Component: DOM → DOM: Core & HTML
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: