page fault on device disconnect

Hans Petter Selasky hselasky at c2i.net
Sat Jan 22 15:01:54 UTC 2011


On Wednesday 19 January 2011 21:44:01 Marcin Wisnicki wrote:
> 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
> 

Could you show more dmesg?

Also try to build a kernel with the following options:

> options         KDB
> options         BREAK_TO_DEBUGGER
> options         DDB
> makeoptions     DEBUG=-g
> options         INVARIANTS
> options         INVARIANT_SUPPORT
> options         WITNESS
> options         DEBUG_LOCKS
> options         DEBUG_VFS_LOCKS
> options         DIAGNOSTIC
> options         SW_WATCHDOG
> options         KTRACE                  # ktrace(1) support
> options         SOCKBUF_DEBUG
> options         DEBUG_MEMGUARD
>

> 
> # 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.

--HPS


More information about the freebsd-usb mailing list