Closed Bug 570132 Opened 14 years ago Closed 14 years ago

e10s: Chrome process crash at shutdown if connection error exists

Categories

(Core :: IPC, defect)

x86
Linux
defect
Not set
normal

Tracking

()

RESOLVED FIXED

People

(Reporter: jdm, Assigned: jdm)

References

Details

Attachments

(1 file, 1 obsolete file)

This is another symptom of the underlying problem of bug 565223.  The content process crashed during shutdown, then the chrome process died with the following stack:

#0  0x0022c416 in ?? ()
#1  0x03489a81 in raise () from /lib/libc.so.6
#2  0x0348b34a in abort () from /lib/libc.so.6
#3  0x00972f84 in mozalloc_abort (msg=0xbfffdf9c "###!!! ABORT: not on worker thread!: 'mWorkerLoop == MessageLoop::current()', file ../../dist/include/mozilla/ipc/AsyncChannel.h, line 132")
    at /home/t_mattjo/src/firefox/electrolysis/memory/mozalloc/mozalloc_abort.cpp:73
#4  0x02223f62 in Abort (aMsg=0xbfffdf9c "###!!! ABORT: not on worker thread!: 'mWorkerLoop == MessageLoop::current()', file ../../dist/include/mozilla/ipc/AsyncChannel.h, line 132")
    at /home/t_mattjo/src/firefox/electrolysis/xpcom/base/nsDebugImpl.cpp:371
#5  0x02223e86 in NS_DebugBreak_P (aSeverity=3, aStr=0x2860b5e "not on worker thread!", aExpr=0x2860b38 "mWorkerLoop == MessageLoop::current()", aFile=0x2860b08 "../../dist/include/mozilla/ipc/AsyncChannel.h", aLine=132)
    at /home/t_mattjo/src/firefox/electrolysis/xpcom/base/nsDebugImpl.cpp:329
#6  0x0207daf1 in mozilla::ipc::AsyncChannel::AssertWorkerThread (this=0xb7db2d78) at ../../dist/include/mozilla/ipc/AsyncChannel.h:131
#7  0x02085ad7 in mozilla::ipc::RPCChannel::CxxStackFrame::CxxStackFrame(mozilla::ipc::RPCChannel&, mozilla::ipc::RPCChannel::Direction, IPC::Message const*) () from /home/t_mattjo/src/firefox/electrolysis/ff-dbg/dist/bin/libxul.so
#8  0x0208339c in mozilla::ipc::RPCChannel::Send (this=0xb7db2d78, msg=0xb069c0d0) at /home/t_mattjo/src/firefox/electrolysis/ipc/glue/RPCChannel.cpp:141
#9  0x020b3271 in mozilla::dom::PContentProcessParent::SendSetOffline (this=0xb7db2d70, offline=@0xbfffe528) at PContentProcessParent.cpp:254
#10 0x02053675 in mozilla::dom::ContentProcessParent::Observe (this=0xb7db2d70, aSubject=0x0, aTopic=0x24c77de "ipc:network:set-offline", aData=0x24c77c8) at /home/t_mattjo/src/firefox/electrolysis/dom/ipc/ContentProcessParent.cpp:328
#11 0x021c7433 in nsObserverList::NotifyObservers (this=0xb382b8f0, aSubject=0x0, aTopic=0x24c77de "ipc:network:set-offline", someData=0x24c77c8) at /home/t_mattjo/src/firefox/electrolysis/xpcom/ds/nsObserverList.cpp:130
#12 0x021c8dd1 in nsObserverService::NotifyObservers (this=0xb7dceaf0, aSubject=0x0, aTopic=0x24c77de "ipc:network:set-offline", someData=0x24c77c8) at /home/t_mattjo/src/firefox/electrolysis/xpcom/ds/nsObserverService.cpp:182
#13 0x00f2b99c in nsIOService::SetOffline (this=0xb7d1f600, offline=1) at /home/t_mattjo/src/firefox/electrolysis/netwerk/base/src/nsIOService.cpp:696
#14 0x00f2c5f2 in nsIOService::Observe (this=0xb7d1f600, subject=0xb7dc0344, topic=0x2895ed0 "xpcom-shutdown", data=0x0) at /home/t_mattjo/src/firefox/electrolysis/netwerk/base/src/nsIOService.cpp:933
#15 0x021c7433 in nsObserverList::NotifyObservers (this=0xb382bcbc, aSubject=0xb7dc0344, aTopic=0x2895ed0 "xpcom-shutdown", someData=0x0) at /home/t_mattjo/src/firefox/electrolysis/xpcom/ds/nsObserverList.cpp:130
#16 0x021c8dd1 in nsObserverService::NotifyObservers (this=0xb7dceaf0, aSubject=0xb7dc0344, aTopic=0x2895ed0 "xpcom-shutdown", someData=0x0) at /home/t_mattjo/src/firefox/electrolysis/xpcom/ds/nsObserverService.cpp:182
#17 0x021bb0b6 in mozilla::ShutdownXPCOM (servMgr=0xb7dc0344) at /home/t_mattjo/src/firefox/electrolysis/xpcom/build/nsXPComInit.cpp:795
#18 0x021baebb in NS_ShutdownXPCOM_P (servMgr=0xb7dc0344) at /home/t_mattjo/src/firefox/electrolysis/xpcom/build/nsXPComInit.cpp:758
#19 0x00eea9e0 in ScopedXPCOMStartup::~ScopedXPCOMStartup (this=0xbfffea80, __in_chrg=<value optimized out>) at /home/t_mattjo/src/firefox/electrolysis/toolkit/xre/nsAppRunner.cpp:1073
#20 0x00ef2a0b in XRE_main (argc=5, argv=0xbfffed94, aAppData=0xb7d0e380) at /home/t_mattjo/src/firefox/electrolysis/toolkit/xre/nsAppRunner.cpp:3668
#21 0x08049807 in main (argc=5, argv=0xbfffed94) at /home/t_mattjo/src/firefox/electrolysis/browser/app/nsBrowserApp.cpp:158

which indicates that the channel was in the error state.  We could obviously work around this by adding an |if (mIsAlive)| check to every Send call, but it might be nice to fix this at the root cause (AsyncChannel's error cleanup is too eager).
Attached patch Patch (obsolete) — Splinter Review
Let's wrap the Send* calls in alive-ness checks and stop crashing.
Assignee: nobody → josh
Attached patch PatchSplinter Review
Now lacking unrelated changes.
Attachment #455807 - Attachment is obsolete: true
Attachment #455809 - Flags: review?(dwitte)
Comment on attachment 455809 [details] [diff] [review]
Patch

r=dwitte
Attachment #455809 - Flags: review?(dwitte) → review+
Keywords: checkin-needed
http://hg.mozilla.org/mozilla-central/rev/67118cc6dcad
Status: NEW → RESOLVED
Closed: 14 years ago
Keywords: checkin-needed
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: