page fault on device disconnect

Marcin Wisnicki mwisnicki+freebsd at gmail.com
Wed Jan 19 20:59:19 UTC 2011


I've accidentally cut power to my self-powered USB hdd enclosure with
UFS+gjournal on GELI.
The enclosure also acts as a hub and has single usb memory stick plugged
in but not mounted.

I kind of expected to have panic in VFS as is typical in such situations
but instead it happened earlier in the stack:

ugen3.2: <vendor 0x058f> at usbus3 (disconnected)
uhub4: at uhub3, port 1, addr 2 (disconnected)


Fatal trap 12: page fault while in kernel mode
cpuid = 0; apic id = 00
fault virtual address   = 0xea7820aa
fault code              = supervisor read, page not present
instruction pointer     = 0x20:0xc0710d64
stack pointer           = 0x28:0xe4239afc
frame pointer           = 0x28:0xe4239b0c
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         = 15 (usbus3)
trap number             = 12
panic: page fault
cpuid = 0
KDB: stack backtrace:
db_trace_self_wrapper(c076c1d5,d31206e,2c66000a,70797420,78302065,...) at db_trace_self_wrapper+0x26
kdb_backtrace(c078804a,0,c075dd75,e42399a8,0,...) at kdb_backtrace+0x2a
panic(c075dd75,c0788d33,c3e43438,1,1,...) at panic+0x117
trap_fatal(c1190000,ea782000,1,0,c3e432d0,...) at trap_fatal+0x325
trap_pfault(0,0,9ed23521,c3e432d0,c3d82000,...) at trap_pfault+0x250
trap(e4239abc) at trap+0x453
calltrap() at calltrap+0x6
--- trap 0xc, eip = 0xc0710d64, esp = 0xe4239afc, ebp = 0xe4239b0c ---
bus_dma_tag_destroy(ea78207a,c44767d0,c4476400,c44c10a0,e4239b44,...) at bus_dma_tag_destroy+0x14
usb_dma_tag_unsetup(c4476400,0,c09cc592,491,c44764b0,...) at usb_dma_tag_unsetup+0x3e
usbd_transfer_unsetup_sub(c3e60dd4,0,c09cc592,4f0,0,...) at usbd_transfer_unsetup_sub+0xa0
usbd_transfer_unsetup(c44c10a0,1,c44c1200,1,0,...) at usbd_transfer_unsetup+0x1ad
uhub_detach(c44c1200,c3d8f860,c079b618,e4239bc4,c0527199,...) at uhub_detach+0x3a
device_detach(c44c1200,c09cbde6,c4466bd0,1,2,...) at device_detach+0x68
usb_detach_device(c447d000,ff,2,c447d0f0,c447d000,...) at usb_detach_device+0x3f
usb_unconfigure(c44c9600,c09bb1f0,c3fda440,7f2,c3e60c78,...) at usb_unconfigure+0x36
usb_free_device(c447d000,0,1,10,c3e60dd4,...) at usb_free_device+0x18a
uhub_explore(c3eba400,0,c09cb510,f7,c3e60d5c,...) at uhub_explore+0x128
usb_bus_explore(c3e60d5c,c3e60dd4,c09cc4e1,6c,c3e60d0c,...) at usb_bus_explore+0xb8
usb_process(c3e60cfc,e4239d28,4900002,18080458,3019040,...) at usb_process+0xaa
fork_exit(c09c5890,c3e60cfc,e4239d28) at fork_exit+0x90
fork_trampoline() at fork_trampoline+0x8
--- trap 0, eip = 0, esp = 0xe4239d60, ebp = 0 ---
Uptime: 30d19h59m54s
(da0:umass-sim0:0:0:0): SYNCHRONIZE CACHE(10). CDB: 35 0 0 0 0 0 0 0 0 0
(da0:umass-sim0:0:0:0): SCSI sense: Error code 0x3e


# FreeBSD 8.2-PRERELEASE #0: Sun Dec 19 19:59:25 CET 2010

It's not really important to me but if someone wants to work on it
I can provide more info.



More information about the freebsd-usb mailing list