Re: mtv leaves a zombie after exit

From: Don Lewis <truckman_at_FreeBSD.org>
Date: Mon, 12 May 2003 23:01:02 -0700 (PDT)
On 12 May, Doug Barton wrote:
> On Mon, 12 May 2003, Terry Lambert wrote:
> 
>> A "ps -gaxl" will print the wait channel, which may be more
>> informative.
> 
>  UID PID PPID CPU PRI NI VSZ RSS MWCHAN STAT  TT    TIME COMMAND
> 1000   0    1   0 -84  0   0   0 -      ZW    p4 0:00.00  (mtvp)
> 
> BTW, inre your question about the shell, it's bash. But, I get the exact
> same results if mtv is started as a child of the shell, as a child of
> windowmaker, or as a child of netscape.

Does this application use Linux threads?  The following code in wait1()
makes me think that if a thread somehow gets orphaned by the parent
Linux process, it will never get reaped.  The exit code for Linux should
probably wait for any child threads to exit.

        LIST_FOREACH(p, &q->p_children, p_sibling) {
                PROC_LOCK(p);
                if (uap->pid != WAIT_ANY &&
                    p->p_pid != uap->pid && p->p_pgid != -uap->pid) {
                        PROC_UNLOCK(p);
                        continue;
                }

                /*
                 * This special case handles a kthread spawned by linux_clone
                 * (see linux_misc.c).  The linux_wait4 and linux_waitpid
                 * functions need to be able to distinguish between waiting
                 * on a process and waiting on a thread.  It is a thread if
                 * p_sigparent is not SIGCHLD, and the WLINUXCLONE option
                 * signifies we want to wait for threads and not processes.
                 */
                if ((p->p_sigparent != SIGCHLD) ^
                    ((uap->options & WLINUXCLONE) != 0)) {
                        PROC_UNLOCK(p);
                        continue;
                }
Received on Mon May 12 2003 - 21:01:12 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:37:07 UTC