Closed Bug 552570 Opened 14 years ago Closed 14 years ago

Hang in child process on shutdown

Categories

(Core :: IPC, defect)

x86
Linux
defect
Not set
normal

Tracking

()

RESOLVED WORKSFORME

People

(Reporter: jdm, Unassigned)

Details

I've been getting occasional endless hangs on shutdown in the past few days.  Here's the gdb stack for the parent:

Thread 1 (Thread 0xb789a790 (LWP 13336)):
#0  0x00b37416 in __kernel_vsyscall ()
#1  0x00a709fd in pthread_join () from /lib/libpthread.so.0
#2  0x0219924f in PlatformThread::Join (thread_handle=3074394992) at /home/t_mattjo/src/firefox/electrolysis/ipc/chromium/src/base/platform_thread_posix.cc:119
#3  0x0216981c in base::Thread::Stop (this=0xb76d1300) at /home/t_mattjo/src/firefox/electrolysis/ipc/chromium/src/base/thread.cc:114
#4  0x01f9ece2 in mozilla::ipc::BrowserProcessSubThread::~BrowserProcessSubThread (this=0xb76d1300, __in_chrg=<value optimized out>)
    at /home/t_mattjo/src/firefox/electrolysis/ipc/glue/BrowserProcessSubThread.cpp:89
#5  0x01f9ed5b in mozilla::ipc::BrowserProcessSubThread::~BrowserProcessSubThread (this=0xb76d1300, __in_chrg=<value optimized out>)
    at /home/t_mattjo/src/firefox/electrolysis/ipc/glue/BrowserProcessSubThread.cpp:94
#6  0x0208112d in mozilla::ShutdownXPCOM (servMgr=0x0) at /home/t_mattjo/src/firefox/electrolysis/xpcom/build/nsXPComInit.cpp:891
#7  0x02080a7d in NS_ShutdownXPCOM_P (servMgr=0xb76c0224) at /home/t_mattjo/src/firefox/electrolysis/xpcom/build/nsXPComInit.cpp:728
#8  0x00dfa592 in ScopedXPCOMStartup::~ScopedXPCOMStartup (this=0xbfbc9454, __in_chrg=<value optimized out>) at /home/t_mattjo/src/firefox/electrolysis/toolkit/xre/nsAppRunner.cpp:1055
#9  0x00e02a1c in XRE_main (argc=3, argv=0xbfbc9774, aAppData=0xb7616380) at /home/t_mattjo/src/firefox/electrolysis/toolkit/xre/nsAppRunner.cpp:3592
#10 0x08049807 in main (argc=3, argv=0xbfbc9774) at /home/t_mattjo/src/firefox/electrolysis/browser/app/nsBrowserApp.cpp:158

Thread 4 (Thread 0xb73f8b70 (LWP 13344)):
#0  0x00b37416 in __kernel_vsyscall ()
#1  0x00a77bab in waitpid () from /lib/libpthread.so.0
#2  0x021ac600 in (anonymous namespace)::ChildReaper::WaitForChildExit (this=0xad2410c0)
    at /home/t_mattjo/src/firefox/electrolysis/ipc/chromium/src/chrome/common/process_watcher_posix_sigchld.cc:112
#3  0x021aca92 in (anonymous namespace)::ChildLaxReaper::WillDestroyCurrentMessageLoop (this=0xad2410c0)
    at /home/t_mattjo/src/firefox/electrolysis/ipc/chromium/src/chrome/common/process_watcher_posix_sigchld.cc:202
#4  0x02145280 in MessageLoop::~MessageLoop (this=0xb73f81a8, __in_chrg=<value optimized out>) at /home/t_mattjo/src/firefox/electrolysis/ipc/chromium/src/base/message_loop.cc:135
#5  0x02169aa2 in base::Thread::ThreadMain (this=0xb76d1300) at /home/t_mattjo/src/firefox/electrolysis/ipc/chromium/src/base/thread.cc:175
#6  0x02199056 in ThreadFunc (closure=0xb76d1300) at /home/t_mattjo/src/firefox/electrolysis/ipc/chromium/src/base/platform_thread_posix.cc:26
#7  0x00a6fab5 in start_thread () from /lib/libpthread.so.0
#8  0x029a0dce in clone () from /lib/libc.so.6

And more interestingly, the child:

Thread 10 (Thread 0xb7727b70 (LWP 13366)):
#0  0x0069d416 in __kernel_vsyscall ()
#1  0x00a73c45 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0
#2  0x00138660 in PR_WaitCondVar (cvar=0x9d6c3e0, timeout=4294967295) at /home/t_mattjo/src/firefox/electrolysis/nsprpub/pr/src/pthreads/ptsynch.c:417
#3  0x020eca71 in mozilla::CondVar::Wait (this=0x9d6659c, interval=4294967295) at BlockingResourceBase.cpp:373
#4  0x0201e982 in mozilla::ipc::SyncChannel::WaitForNotify (this=0x9d66580) at /home/t_mattjo/src/firefox/electrolysis/ipc/glue/SyncChannel.cpp:292
#5  0x02018ba9 in mozilla::ipc::RPCChannel::BlockOnParent (this=0x9d66580) at /home/t_mattjo/src/firefox/electrolysis/ipc/glue/RPCChannel.cpp:543
#6  0x02018a81 in mozilla::ipc::RPCChannel::OnSpecialMessage (this=0x9d66580, id=65532, msg=...) at /home/t_mattjo/src/firefox/electrolysis/ipc/glue/RPCChannel.cpp:512
#7  0x020126f3 in mozilla::ipc::AsyncChannel::OnDispatchMessage (this=0x9d66580, msg=...) at /home/t_mattjo/src/firefox/electrolysis/ipc/glue/AsyncChannel.cpp:236
#8  0x0201845c in mozilla::ipc::RPCChannel::OnMaybeDequeueOne (this=0x9d66580) at /home/t_mattjo/src/firefox/electrolysis/ipc/glue/RPCChannel.cpp:393
#9  0x0201cc77 in DispatchToMethod<mozilla::ipc::RPCChannel, void (mozilla::ipc::RPCChannel::*)()> (obj=0x9d66580, method=
    (void (mozilla::ipc::RPCChannel::*)(mozilla::ipc::RPCChannel *)) 0x20182ee <mozilla::ipc::RPCChannel::OnMaybeDequeueOne()>, arg=...)
    at /home/t_mattjo/src/firefox/electrolysis/ipc/chromium/src/base/tuple.h:383
#10 0x0201cb8f in RunnableMethod<mozilla::ipc::RPCChannel, void (mozilla::ipc::RPCChannel::*)(), Tuple0>::Run (this=0x9d6c6e0)
    at /home/t_mattjo/src/firefox/electrolysis/ipc/chromium/src/base/task.h:307
#11 0x02019794 in mozilla::ipc::RPCChannel::RefCountedTask::Run (this=0x9d6c708) at ../../dist/include/mozilla/ipc/RPCChannel.h:376
#12 0x0201988c in mozilla::ipc::RPCChannel::DequeueTask::Run (this=0x9d6c540) at ../../dist/include/mozilla/ipc/RPCChannel.h:401
#13 0x021bab6e in MessageLoop::RunTask (this=0xb77271a8, task=0x9d6c540) at /home/t_mattjo/src/firefox/electrolysis/ipc/chromium/src/base/message_loop.cc:336
#14 0x021babd7 in MessageLoop::DeferOrRunPendingTask (this=0xb77271a8, pending_task=...) at /home/t_mattjo/src/firefox/electrolysis/ipc/chromium/src/base/message_loop.cc:344
#15 0x021bafad in MessageLoop::DoWork (this=0xb77271a8) at /home/t_mattjo/src/firefox/electrolysis/ipc/chromium/src/base/message_loop.cc:444
#16 0x02016852 in mozilla::ipc::MessagePump::Run (this=0xb6c00468, aDelegate=0xb77271a8) at /home/t_mattjo/src/firefox/electrolysis/ipc/glue/MessagePump.cpp:122
#17 0x021ba66b in MessageLoop::RunInternal (this=0xb77271a8) at /home/t_mattjo/src/firefox/electrolysis/ipc/chromium/src/base/message_loop.cc:216
#18 0x021ba5e7 in MessageLoop::RunHandler (this=0xb77271a8) at /home/t_mattjo/src/firefox/electrolysis/ipc/chromium/src/base/message_loop.cc:199
#19 0x021ba56b in MessageLoop::Run (this=0xb77271a8) at /home/t_mattjo/src/firefox/electrolysis/ipc/chromium/src/base/message_loop.cc:173
#20 0x021dea32 in base::Thread::ThreadMain (this=0x9d66520) at /home/t_mattjo/src/firefox/electrolysis/ipc/chromium/src/base/thread.cc:165
#21 0x0220e056 in ThreadFunc (closure=0x9d66520) at /home/t_mattjo/src/firefox/electrolysis/ipc/chromium/src/base/platform_thread_posix.cc:26
#22 0x00a6fab5 in start_thread () from /lib/libpthread.so.0
#23 0x0099adce in clone () from /lib/libc.so.6
Since I see the BlockOnParent call in there, this may be something to do with my use of CPOWs.
I have not reproduced anything like this in numerous months, so I'm closing it out.
Status: NEW → RESOLVED
Closed: 14 years ago
Resolution: --- → WORKSFORME
You need to log in before you can comment on or make changes to this bug.