kern/71491: printing under usb printer causes a kernel panic
Amir Shalem
amir at boom.org.il
Wed Sep 8 04:50:24 PDT 2004
>Number: 71491
>Category: kern
>Synopsis: printing under usb printer causes a kernel panic
>Confidential: no
>Severity: critical
>Priority: high
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Wed Sep 08 11:50:23 GMT 2004
>Closed-Date:
>Last-Modified:
>Originator: Amir Shalem
>Release: FreeBSD 5.3-BETA3 i386
>Organization:
>Environment:
System: FreeBSD vmware.active.ath.cx 5.3-BETA3 FreeBSD 5.3-BETA3 #2: Wed Sep 8 13:37:55 IDT 2004 root at vmware.active.ath.cx:/usr/src/sys/i386/compile/VMWARE i386
I have set test machine, under vmware, where I installed 5.3-beta3
The printer is HP DeskJet 3650
I use it under cups + hpijs-cups (not in ports)
>Description:
This bug also happens with 6-current.
I have tried this under with:
offical 5.3-beta3 kernel
5.3-beta3 + ule + usb_debug (at level 10)
5.3-beta3 + 4bsd + usb_debug (at level 10)
in all conditions I got the crash,
where using the usb_debug I got it _right away_
where as, in the offical I had to do multiply printing in cups.
The problem is printing via cups, printing test page for example,
causes the bug.
if I turn DIAGNOSTIC on the bug does appear.
I have kernel dump + kernel.debug for all kind of kernels (at request),
here goes the dmesg and backtrace of 4bsd+usbdebug:
TD(0xc12e3f60) at 04c77f60 = link=0x04c77f84 status=0x388003ff token=0x07e90269
4c77f84<VF> 388003ff<ACTIVE,SPD>,errcnt=3,actlen=0 pid=69,addr=2,endpt=2,D=1,m
TD(0xc12e3f80) at 04c77f80 = link=0x00000005 status=0x398003ff token=0x07e10269
5<T,VF> 398003ff<ACTIVE,IOC,SPD>,errcnt=3,actlen=0 pid=69,addr=2,endpt=2,D=0,m
uhci_start_loop: add
ulpt_tick: err=1
uhci_timeout: uxfer=0xc16a8a00
usb_add_task: task=0xc16a8a84
usb_transfer_complete: pipe=0xc16a6a00 xfer=0xc16a8a00 status=0 actlen=0
usb_transfer_complete: repeat=0 new head=0
ulpt_read_cb: start sc=0xc13ae880, err=0 n=0
uhci_device_bulk_done: xfer=0xc16a8a00 ii=0xc16a8a6c sc=0xc12e1000 upipe=0xc16a6
uhci_end_loop: remove
uhci_device_bulk_done: length=0
usbd_start_next: pipe=0xc16a6a00, xfer=0
usb_task_thread: woke up task=0xc16a8a84
uhci_timeout_task: xfer=0xc16a8a00
uhci_abort_xfer: xfer=0xc16a8a00, status=15
uhci_abort_xfer: stop ii=0xc16a8a6c
uhci_abort_xfer: callback
usb_transfer_complete: pipe=0xc16a6a00 xfer=0xc16a8a00 status=15 actlen=0
Fatal trap 12: page fault while in kernel mode
cpuid = 0; apic id = 00
fault virtual address = 0x4c
fault code = supervisor read, page not present
instruction pointer = 0x8:0xc05b398d
stack pointer = 0x10:0xc636ccbc
frame pointer = 0x10:0xc636ccd8
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 = 46 (usbtask)
panic: from debugger
and backtrace:
#25 0xc05b398d in usb_transfer_complete (xfer=0xc16a8a00)
at ../../../dev/usb/usbdi.c:819
#26 0xc05a390a in uhci_abort_xfer (xfer=0xc16a8a00, status=USBD_TIMEOUT)
at ../../../dev/usb/uhci.c:1994
#27 0xc05a2f08 in uhci_timeout_task (addr=0xc16a8a00)
at ../../../dev/usb/uhci.c:1533
#28 0xc05afd45 in usb_task_thread (arg=0x0) at ../../../dev/usb/usb.c:464
#29 0xc05f29dc in fork_exit (callout=0xc05afc98 <usb_task_thread>, arg=0x0,
frame=0xc636cd48) at ../../../kern/kern_fork.c:820
#30 0xc077ae6c in fork_trampoline () at ../../../i386/i386/exception.s:209
(kgdb) frame 25
#25 0xc05b398d in usb_transfer_complete (xfer=0xc16a8a00)
at ../../../dev/usb/usbdi.c:819
819 SIMPLEQ_REMOVE_HEAD(&pipe->queue, next);
(kgdb) print pipe->queue
$1 = {stqh_first = 0x0, stqh_last = 0xc16a6a14}
(kgdb) print *pipe->queue->stqh_last
$2 = (struct usbd_xfer *) 0x0
(kgdb) q
Basicly the pipe queue is empty when reaching the code,
and it expects to have something in queue.
>How-To-Repeat:
Boot kernel with USB_DEBUG, and set:
hw.usb.debug=10
hw.usb.ulpt.debug=10
hw.usb.uhci.debug=10
and try to print to your usb printer.
>Fix:
Unknown.
Maybe to add a check to see if queue is already empty ?
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-bugs
mailing list