kern/127561: panic at closing uvisor.
KOIE Hidetaka
koie at suri.co.jp
Tue Sep 23 09:30:05 UTC 2008
>Number: 127561
>Category: kern
>Synopsis: panic at closing uvisor.
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Tue Sep 23 09:30:04 UTC 2008
>Closed-Date:
>Last-Modified:
>Originator: KOIE Hidetaka
>Release: 8.0-CURRENT
>Organization:
SURIGIKEN
>Environment:
FreeBSD guriandgura 8.0-CURRENT FreeBSD 8.0-CURRENT #1: Tue Sep 23 17:45:26 JST 2008 koie at guriandgura:/usr/obj/usr/src/sys/GURIANDGURA amd64
>Description:
I'm using pilot-xfer(/usr/ports/palm/pilot-link) via uvisor(4) to hotsync, and
/usr/sbin/ppp via /dev/cuaU0 to connect network.
Since change new TTY layer, at end of hotsync and closing ppp session, kernel panics:
guriandgura# kgdb /boot/kernel/kernel.symbols vmcore.0
GNU gdb 6.1.1 [FreeBSD]
..
Unread portion of the kernel message buffer:
ucom0: at uhub0 port 5 (addr 2) disconnected
ucom0: detached
Fatal trap 12: page fault while in kernel mode
cpuid = 2; apic id = 02
fault virtual address = 0x134
fault code = supervisor read data, page not present
instruction pointer = 0x8:0xffffffff80304522
stack pointer = 0x10:0xffffffff7fe4f890
frame pointer = 0x10:0xffffffff7fe4f8c0
code segment = base 0x0, limit 0xfffff, type 0x1b
= DPL 0, pres 1, long 1, def32 0, gran 1
processor eflags = interrupt enabled, resume, IOPL = 0
current process = 1808 (ppp)
..
(kgdb) bt
#0 doadump () at pcpu.h:196
#1 0xffffffff801b450c in db_fncall (dummy1=Variable "dummy1" is not available.
)
at /usr/src/sys/ddb/db_command.c:549
#2 0xffffffff801b4a61 in db_command (last_cmdp=0xffffffff807f7d60, cmd_table=Variable "cmd_table" is not available.
) at /usr/src/sys/ddb/db_command.c:446
#3 0xffffffff801b4cb0 in db_command_loop ()
at /usr/src/sys/ddb/db_command.c:499
#4 0xffffffff801b6a19 in db_trap (type=Variable "type" is not available.
) at /usr/src/sys/ddb/db_main.c:228
#5 0xffffffff8036a465 in kdb_trap (type=12, code=0, tf=0xffffffff7fe4f7e0)
at /usr/src/sys/kern/subr_kdb.c:534
#6 0xffffffff8059dd2d in trap_fatal (frame=0xffffffff7fe4f7e0, eva=Variable "eva" is not available.
)
at /usr/src/sys/amd64/amd64/trap.c:754
#7 0xffffffff8059e104 in trap_pfault (frame=0xffffffff7fe4f7e0, usermode=0)
at /usr/src/sys/amd64/amd64/trap.c:675
#8 0xffffffff8059ea69 in trap (frame=0xffffffff7fe4f7e0)
at /usr/src/sys/amd64/amd64/trap.c:444
#9 0xffffffff8058174e in calltrap ()
at /usr/src/sys/amd64/amd64/exception.S:217
#10 0xffffffff80304522 in destroy_dev_sched_cb (dev=0x0,
cb=0xffffffff80386a00 <tty_dealloc>, arg=0xffffff0004e22c00)
at /usr/src/sys/kern/kern_conf.c:1136
#11 0xffffffff80387eec in ttydev_close (dev=Variable "dev" is not available.
) at /usr/src/sys/kern/tty.c:312
#12 0xffffffff802c67b4 in devfs_close (ap=0xffffffff7fe4f960)
at /usr/src/sys/fs/devfs/devfs_vnops.c:458
#13 0xffffffff803cfd5d in vn_close (vp=0xffffff00b787e000, flags=3,
file_cred=0xffffff000ff0aa00, td=0xffffff000f4bc000) at vnode_if.h:225
#14 0xffffffff803cfdf9 in vn_closefile (fp=0xffffff00054b6370,
td=0xffffff000f4bc000) at /usr/src/sys/kern/vfs_vnops.c:920
#15 0xffffffff802c62ea in devfs_close_f (fp=Variable "fp" is not available.
)
at /usr/src/sys/fs/devfs/devfs_vnops.c:471
#16 0xffffffff8030b1e3 in _fdrop (fp=0xffffff00054b6370, td=Variable "td" is not available.
) at file.h:293
#17 0xffffffff8030c34b in closef (fp=0xffffff00054b6370,
td=0xffffff000f4bc000) at /usr/src/sys/kern/kern_descrip.c:2003
#18 0xffffffff8030cb26 in kern_close (td=0xffffff000f4bc000, fd=Variable "fd" is not available.
)
at /usr/src/sys/kern/kern_descrip.c:1105
#19 0xffffffff8059e376 in syscall (frame=0xffffffff7fe4fc90)
at /usr/src/sys/amd64/amd64/trap.c:898
#20 0xffffffff8058195b in Xfast_syscall ()
at /usr/src/sys/amd64/amd64/exception.S:338
#21 0x0000000801278a5c in ?? ()
Previous frame inner to this frame (corrupt stack?)
>How-To-Repeat:
>Fix:
I'm patching the follwing:
RCS file: /museum/freebsd/repo/usr/src/sys/kern/tty.c,v
retrieving revision 1.290
diff -u -p -r1.290 tty.c
--- kern/tty.c 22 Sep 2008 19:25:14 -0000 1.290
+++ kern/tty.c 23 Sep 2008 08:45:20 -0000
@@ -936,6 +936,17 @@ tty_rel_free(struct tty *tp)
tp->t_dev = NULL;
tty_unlock(tp);
+#if 1 /*KOIE*/
+ printf("%s: pid=%ld tp=%p t_dev=%p\n",
+ __func__,
+ (curproc ? (long)curproc->p_pid : 0L),
+ tp,
+ dev);
+ if (dev == NULL) {
+ printf("dev is already destroyed; skip\n");
+ return;
+ }
+#endif
destroy_dev_sched_cb(dev, tty_dealloc, tp);
}
The follwing message is gotten to run hotsync:
ucom0: <Palm. Inc. Palm Handheld, class 0/0, rev 1.10/1.00, addr 2> on uhub0
ucom0: at uhub0 port 5 (addr 2) disconnected
tty_rel_free: pid=14 tp=0xffffff0005284000 t_dev=0xffffff00921b1800
ucom0: detached
tty_rel_free: pid=1815 tp=0xffffff0005284000 t_dev=0
dev is already destroyed; skip
pid 14 is usb0 (that is a kernen process).
pid 1815 is pilot-xfer.
It seems that destroy_dev_sched_cb() is called twice.
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-bugs
mailing list