Date: Sat, 8 Feb 2003 16:12:26 +0100 From: Thomas Moestl <tmoestl@gmx.net> To: Morten Rodal <morten@rodal.no> Cc: Kris Kennaway <kris@obsecurity.org>, current@FreeBSD.ORG Subject: Re: Panic in fork() Message-ID: <20030208151226.GB624@crow.dom2ip.de> In-Reply-To: <20030208141542.GC11725@slurp.rodal.no> References: <20030208092406.GA12104@rot13.obsecurity.org> <20030208110512.GB12696@rot13.obsecurity.org> <20030208141542.GC11725@slurp.rodal.no>
next in thread | previous in thread | raw e-mail | index | archive | help
On Sat, 2003/02/08 at 15:15:44 +0100, Morten Rodal wrote:
> On Sat, Feb 08, 2003 at 03:05:12AM -0800, Kris Kennaway wrote:
> > bento# addr2line -e kernel.debug 0xc01a1e2d
> > ../../../kern/kern_fork.c:388
> >
> > for (; p2 != NULL; p2 = LIST_NEXT(p2, p_list)) {
> > PROC_LOCK(p2);
> > 388 --> while (p2->p_pid == trypid ||
> >
>
> That is the exact same spot I saw my computer (old smp machine) crash.
> I think someone mentioned that it would be more or less impossible to
> crash there since one would not enter the for loop when p2 is NULL.
>
> Could it be that PROC_LOCK tampers with p2?
addr2line will usually point to the first line of a statement if it
spans multiple lines; in this case, the full guard is:
while (p2->p_pid == trypid ||
p2->p_pgrp->pg_id == trypid ||
p2->p_session->s_sid == trypid) {
The fault address indicates, that p2->p_pgrp->p_session (p_session is
a macro that expands to p_pgrp->p_session) is NULL, since the offset
of s_sid in struct session is 0x14.
I haven't yet found out how that could happen though, this field is
never legitimatly NULL and the locking seems to be tight so that it
cannot be freed from under fork1().
- Thomas
--
Thomas Moestl <tmoestl@gmx.net> http://www.tu-bs.de/~y0015675/
<tmm@FreeBSD.org> http://people.FreeBSD.org/~tmm/
PGP fingerprint: 1C97 A604 2BD0 E492 51D0 9C0F 1FE6 4F1D 419C 776C
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20030208151226.GB624>
