On Thu, 6 Mar 2003, Maxim Konovalov wrote:

> Several identical kernel panics with today -current. I suspect recent
> commits to subr_witness.c. See an attachment for details.

This seems to be most from a double fault triggering a cascade of errors.
There is no frame for the double fault so the critical information is
not shown in the trace.

> panic: blockable sleep lock (sleep mutex) sellck @ 
> /usr/src/sys/kern/sys_generic.c:1191

This is the usual panic from sync() in panic() tripping over a lock.
Calling sync() in panic was never safe and now usually fails.

> #11 0xc0236143 in panic () at /usr/src/sys/kern/kern_shutdown.c:542
> #12 0xc0255837 in witness_lock (lock=0xc03db920, flags=8,
>     file=0xc0392734 "/usr/src/sys/kern/sys_generic.c", line=1191)
>     at /usr/src/sys/kern/subr_witness.c:552

This seems to be usual panic from using TIOCCONS.  TIOCCONS was never safe
and now causes locking violations if printf(9) is called with certain
locks held.

> #13 0xc022d1f3 in _mtx_lock_flags (m=0xc03d82a0, opts=0,
>     file=0xc03db920 " \202=À]'9À]'9À", line=1191)
> ---Type <return> to continue, or q <return> to quit---
>     at /usr/src/sys/kern/kern_mutex.c:337
> #14 0xc025955f in selwakeup (sip=0xc03d82a0)
>     at /usr/src/sys/kern/sys_generic.c:1191
> #15 0xc02638be in ptcwakeup (tp=0xc414f030, flag=-1069696736)
>     at /usr/src/sys/kern/tty_pty.c:327
> #16 0xc0263887 in ptsstart (tp=0x0) at /usr/src/sys/kern/tty_pty.c:316
> #17 0xc025f8bb in ttstart (tp=0x0) at /usr/src/sys/kern/tty.c:1459
> #18 0xc0261604 in tputchar (c=-1005260800, tp=0xc414f030)
>     at /usr/src/sys/kern/tty.c:2579
> #19 0xc0250f1b in putchar (c=10, arg=0xc044e74c)
>     at /usr/src/sys/kern/subr_prf.c:349
> #20 0xc025123d in kvprintf (fmt=0xc414f000 "", func=0xc0250eb0 <putchar>,
>     arg=0xc044e74c, radix=10, ap=0xc044e76c "")
>     at /usr/src/sys/kern/subr_prf.c:528
> #21 0xc0250e07 in printf (fmt=0x0) at /usr/src/sys/kern/subr_prf.c:305

This shows how printf(9) fails.  It wanders into the pty driver.  The
pty driver is highly non-reentrant, but printf(9) needs to work when
called from an abitrary context ...

> #22 0xc03522b2 in dblfault_handler () at /usr/src/sys/i386/i386/trap.c:863

... the double fault context is especially arbitrary.

Something caused a double fault, but neither ddb nor kgdb understands
backtracing from double faults.

Bruce


To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message

Reply via email to