Date: Tue, 28 May 2002 18:38:10 +0200 From: "Jose M. Alcaide" <jose@we.lc.ehu.es> To: David Wolfskill <david@catwhisker.org> Cc: current@FreeBSD.ORG Subject: Re: Panic for today, in dev2udev() Message-ID: <20020528183810.I229@v-ger.we.lc.ehu.es> In-Reply-To: <200205281458.g4SEwdmk027179@bunrab.catwhisker.org>; from david@catwhisker.org on Tue, May 28, 2002 at 07:58:39AM -0700 References: <200205281458.g4SEwdmk027179@bunrab.catwhisker.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, May 28, 2002 at 07:58:39AM -0700, David Wolfskill wrote:
> No problem up to yesterday's -CURRENT (well, other than the 'could
> sleep with "___ lock" locked from ___' messages), and built today's
> OK, but here's what I got on the serial console on reboot:
>
> [...]
>
> Entropy harvesting: interrupts ethernet point_to_point.
>
>
> Fatal trap 12: page fault while in kernel mode
> cpuid = 0; lapic.id = 00000000
> fault virtual address = 0x1c
> fault code = supervisor read, page not present
> instruction pointer = 0x8:0xc0193c66
> stack pointer = 0x10:0xda25db10
> frame pointer = 0x10:0xda25db10
> code segment = base 0x0, limit 0xfffff, type 0x1b
> = DPL 0, pres 1, def32 1, gran 1
> processor eflags = interrupt enabled, resume, IOPL = 0
> current process = 43 (sysctl)
> kernel: type 12 trap, code=0
> Stopped at dev2udev+0x10: movl 0x1c(%edx),%eax
The panic is triggered by a "sysctl -a" invoked from /etc/rc while
harvesting entropy data. The cause is a bug introduced in sys/kern/tty.c.
Try the following patch (suggested by jhay@FreeBSD.org):
Index: sys/kern/tty.c
===================================================================
RCS file: /home/ncvs/src/sys/kern/tty.c,v
retrieving revision 1.179
diff -u -r1.179 tty.c
--- sys/kern/tty.c 28 May 2002 06:53:41 -0000 1.179
+++ sys/kern/tty.c 28 May 2002 12:30:20 -0000
@@ -2593,12 +2593,15 @@
xt.xt_cancc = tp->t_canq.c_cc;
xt.xt_outcc = tp->t_outq.c_cc;
XT_COPY(line);
- xt.xt_dev = dev2udev(tp->t_dev);
+ if (tp->t_dev)
+ xt.xt_dev = dev2udev(tp->t_dev);
XT_COPY(state);
XT_COPY(flags);
XT_COPY(timeout);
- xt.xt_pgid = tp->t_pgrp->pg_id;
- xt.xt_sid = tp->t_session->s_sid;
+ if (tp->t_pgrp)
+ xt.xt_pgid = tp->t_pgrp->pg_id;
+ if (tp->t_session)
+ xt.xt_sid = tp->t_session->s_sid;
XT_COPY(termios);
XT_COPY(winsize);
XT_COPY(column);
--
****** Jose M. Alcaide // jose@we.lc.ehu.es // jmas@FreeBSD.org ******
** "Beware of Programmers who carry screwdrivers" -- Leonard Brandwein **
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?20020528183810.I229>
