Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 29 Jul 2001 15:39:00 -0700 (PDT)
From:      Matthew Jacob <mjacob@feral.com>
To:        John Baldwin <jhb@FreeBSD.org>
Cc:        <smp@FreeBSD.org>
Subject:   RE: kaboom...
Message-ID:  <20010729153617.C44279-100000@wonky.feral.com>
In-Reply-To: <XFMail.010726080719.jhb@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help

>
> This is new however.  The real problem is something trap'd during exit1().  It
> would be helpful to see what source line is at exit1+0x15e4.  The other issue
> is that I've no idea why the process lock is being used as the interlock for a
> vm_map lock.

Happened again once. It may be if I do 2 make -j 8 kernel builds I get this.

The panic is somewhere in exit1 where marked:
--------
        /*
         * notify interested parties of our demise.
         */
        PROC_LOCK(p);
        KNOTE(&p->p_klist, NOTE_EXIT);

        /*
         * Notify parent that we're gone.  If parent has the PS_NOCLDWAIT
         * flag set, or if the handler is set to SIG_IGN, notify process
         * 1 instead (and hope it will handle this situation).
         */
        if ((p->p_pptr->p_procsig->ps_flag & PS_NOCLDWAIT)
            || p->p_pptr->p_sigacts->ps_sigact[_SIG_IDX(SIGCHLD)] == SIG_IGN) {
                struct proc *pp = p->p_pptr;
>>>>>
                proc_reparent(p, initproc);
                /*
                 * If this was the last child of our parent, notify
                 * parent, so in case he was wait(2)ing, he will
                 * continue.
                 */
                if (LIST_EMPTY(&pp->p_children))
                        wakeup((caddr_t)pp);
        }

        PROC_LOCK(p->p_pptr);
        if (p->p_sigparent && p->p_pptr != initproc)
                psignal(p->p_pptr, p->p_sigparent);
        else
                psignal(p->p_pptr, SIGCHLD);
        PROC_UNLOCK(p->p_pptr);


---------
Shouldn't there be a PROC_LOC(p->p_pptr) prior to trying to touch or test
stuff in the paren't PROC structure?

Would it be easier to move PROC_LOCK(p->p_pptr) above the conditional?

Naive....

-matt



To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-smp" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20010729153617.C44279-100000>