Fabian Keil freebsd-lis...@fabiankeil.de wrote:
Hans Petter Selasky h...@selasky.org wrote:
On 10/23/14 16:28, Fabian Keil wrote:
kldunload umass.ko lead to a panic, dumping didn't work.
Screenshots are available at:
http://www.fabiankeil.de/bilder/freebsd/kernel-panic-r273434-usb/
I've seen locked-up usbconfig processes in the past,
usually after executing a shell function that does:
| usbconfig_output=$(sudo usbconfig -d ${device} add_quirk
UQ_MSC_NO_INQUIRY)
| [... error handling snipped ]
| usbconfig_output=$(sudo usbconfig -d ${device} reset)
Sometimes the second command seems to mess up the USB system.
USB detach is synchronous. If for example umass fails to detach, due to
reference counts not reaching zero, that might be the root cause. Try to
get a backtrace from the usb_process() processes using kgdb, and
you'll see right away what is going on.
Thanks for the quick response. So far I haven't been able to intentionally
reproduce the issue, but I'll try the above the next time I unintentionally
run into this again.
A couple of days ago usbconfig got stuck again:
fk@r500 ~ $sudo procstat -kk $(pgrep usbconfig)
PIDTID COMM TDNAME KSTACK
2444 100971 usbconfig-mi_switch+0xe1 sleepq_wait+0x3a
_sx_xlock_hard+0x522 _sx_xlock+0x5d usbd_enum_lock+0x3a usb_ref_device+0x157
usb_open+0xbf devfs_open+0x122 VOP_OPEN_APV+0xa1 vn_open_vnode+0x234
vn_open_cred+0x310 kern_openat+0x26f amd64_syscall+0x3fd Xfast_syscall+0xfb
2425 100970 usbconfig-mi_switch+0xe1
sleepq_timedwait+0x3a _sleep+0x294 pause_sbt+0xd0 usb_pause_mtx+0x85
usb_ioctl+0x3e7 devfs_ioctl_f+0x13b kern_ioctl+0x3ce sys_ioctl+0x140
amd64_syscall+0x3fd Xfast_syscall+0xfb
The USB-related threads:
(kgdb) thread 520
[Switching to thread 520 (Thread 100970)]#0 sched_switch
(td=0xf8001d2044a0, newtd=value optimized out, flags=value optimized
out) at /usr/src/sys/kern/sched_ule.c:1940
1940cpuid = PCPU_GET(cpuid);
(kgdb) where
#0 sched_switch (td=0xf8001d2044a0, newtd=value optimized out,
flags=value optimized out) at /usr/src/sys/kern/sched_ule.c:1940
#1 0x805bbf91 in mi_switch (flags=260, newtd=0x0) at
/usr/src/sys/kern/kern_synch.c:492
#2 0x80601a7a in sleepq_timedwait (wchan=0x0, pri=0) at
/usr/src/sys/kern/subr_sleepqueue.c:666
#3 0x805bb984 in _sleep (ident=value optimized out, lock=value
optimized out, priority=value optimized out, wmesg=value optimized out,
sbt=value optimized out, pr=value optimized out,
flags=value optimized out) at /usr/src/sys/kern/kern_synch.c:250
#4 0x805bbe10 in pause_sbt (wmesg=value optimized out, sbt=value
optimized out, pr=0, flags=value optimized out) at
/usr/src/sys/kern/kern_synch.c:379
#5 0x81e2f175 in usb_pause_mtx (mtx=value optimized out, timo=value
optimized out) at /usr/src/sys/modules/usb/usb/../../../dev/usb/usb_util.c:143
#6 0x81e16ed7 in usb_ioctl (dev=value optimized out, cmd=value
optimized out, addr=value optimized out, fflag=0, td=value optimized out)
at /usr/src/sys/modules/usb/usb/../../../dev/usb/usb_dev.c:1128
#7 0x8047cffb in devfs_ioctl_f (fp=0xf8001d3d1b40, com=2147767558,
data=0xfe009453aa20, cred=value optimized out, td=0xf8001d2044a0) at
/usr/src/sys/fs/devfs/devfs_vnops.c:775
#8 0x8061041e in kern_ioctl (td=0xf8001d2044a0, fd=value
optimized out, com=0) at file.h:318
#9 0x8060ffa0 in sys_ioctl (td=0xf8001d2044a0,
uap=0xfe009453ab80) at /usr/src/sys/kern/sys_generic.c:718
#10 0x80877d5d in amd64_syscall (td=0xf8001d2044a0, traced=0) at
subr_syscall.c:133
#11 0x8085ac9b in Xfast_syscall () at
/usr/src/sys/amd64/amd64/exception.S:390
#12 0x000800b7caea in ?? ()
Previous frame inner to this frame (corrupt stack?)
(kgdb) thread 522
[Switching to thread 522 (Thread 100971)]#0 sched_switch
(td=0xf8001d3a5940, newtd=value optimized out, flags=value optimized
out) at /usr/src/sys/kern/sched_ule.c:1940
1940cpuid = PCPU_GET(cpuid);
(kgdb) where
#0 sched_switch (td=0xf8001d3a5940, newtd=value optimized out,
flags=value optimized out) at /usr/src/sys/kern/sched_ule.c:1940
#1 0x805bbf91 in mi_switch (flags=260, newtd=0x0) at
/usr/src/sys/kern/kern_synch.c:492
#2 0x8060126a in sleepq_wait (wchan=0x0, pri=0) at
/usr/src/sys/kern/subr_sleepqueue.c:631
#3 0x805bae82 in _sx_xlock_hard (sx=0xf80015e82050,
tid=18446735278106892608, opts=value optimized out, file=0x0, line=0) at
/usr/src/sys/kern/kern_sx.c:688
#4 0x805ba6ad in _sx_xlock (sx=0x0, opts=0, file=value optimized
out, line=0) at sx.h:154
#5 0x81e19baa in usbd_enum_lock (udev=0xf80015e82000) at
/usr/src/sys/modules/usb/usb/../../../dev/usb/usb_device.c:2755
#6 0x81e18967 in usb_ref_device