Skip site navigation (1)Skip section navigation (2)
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>