Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 19 Aug 2011 18:28:43 +0300
From:      Andriy Gapon <avg@FreeBSD.org>
To:        Alex Dupre <ale@FreeBSD.org>
Cc:        gecko@FreeBSD.org, Doug Barton <dougb@FreeBSD.org>
Subject:   Re: cvs commit: ports UPDATING ports/mail/enigmail Makefile distinfo pkg-message ports/mail/enigmail-thunderbird Makefile
Message-ID:  <4E4E812B.6000007@FreeBSD.org>
In-Reply-To: <4E4E7D5D.4050204@FreeBSD.org>
References:  <201108181007.p7IA7PgK032094@repoman.freebsd.org> <4E4D6AD3.2050708@FreeBSD.org> <4E4D70FF.2060206@FreeBSD.org> <4E4DCFED.4070601@FreeBSD.org> <4E4E05BA.9070707@FreeBSD.org> <4E4E7A69.8050406@FreeBSD.org> <4E4E7D5D.4050204@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
on 19/08/2011 18:12 Andriy Gapon said the following:
> on 19/08/2011 17:59 Andriy Gapon said the following:
>> nsIPCService::RunPipe -> nsPipeTransport::Terminate -> nsPipeTransport::Kill ->
>> IPC_WaitProcess == _MD_WaitUnixProcess
> 
> BTW, curiously enough this how IPC_WaitProcess invocation looks in
> nsPipeTransport::Kill:
> 
> // Reap process (to avoid memory leaks in NSPR)
> // **NOTE** This could cause this (UI?) thread to hang
> status = IPC_WaitProcess(mProcess, &mExitCode);

I added some more printfs and here is very interesting stuff:

_MD_InitProcesses!
PR_CreateThread(WaitPidDaemonThread)
ForkAndExec, path = /usr/local/bin/gpg2
ForkAndExec, pid = 32094
ForkAndExec: numProcs 0 -> 1
waiting for children
ProcessReapedChildInternal, pid = 31969
ProcessReapedChildInternal: FindPidTable returned NULL
no children
before inputStream->Close()
before pipeTrans->Terminate()
before IPC_WaitProcess
_MD_WaitUnixProcess, pid = 32094
_MD_WaitUnixProcess: FindPidTable returned NULL

So apparently there was some "rogue" child process with pid 31969 which screwed up
the accounting of children and thus WaitPidDaemonThread is not aware that it
should call wait() to wait for pid 32094.
Apparently that rogue child process was not created via
PR_CreateProcess/_MD_CreateUnixProcess, otherwise it would be accounted for via
numProcs.
Hmm...

-- 
Andriy Gapon



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4E4E812B.6000007>