kern/84326: Panic trying to connect SCSI tape drive via USB converter.

Frank Mayhar frank at exit.com
Sat Jul 30 01:20:26 GMT 2005


>Number:         84326
>Category:       kern
>Synopsis:       Panic trying to connect SCSI tape drive via USB converter.
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Sat Jul 30 01:20:22 GMT 2005
>Closed-Date:
>Last-Modified:
>Originator:     Frank Mayhar
>Release:        FreeBSD 5.4-STABLE i386
>Organization:
Exit Consulting 
>Environment:


System: FreeBSD 5.4-STABLE #6: Mon Jul 25 11:50:48 PDT 2005
    frank at realtime.exit.com:/usr/obj/usr/src/sys/REALTIME

Pretty standard dual-athlon system, 1.5G, LSI Logic SCSI, not relevant
to this issue.  USB probes and attaches thusly:

ohci1: <NEC uPD 9210 USB controller> mem 0xe8205000-0xe8205fff irq 16 at device 4.0 on pci4
usb1: OHCI version 1.0
usb1: <NEC uPD 9210 USB controller> on ohci1
usb1: USB revision 1.0
uhub1: NEC OHCI root hub, class 9/0, rev 1.00/1.00, addr 1
uhub1: 3 ports with 3 removable, self powered
ohci2: <NEC uPD 9210 USB controller> mem 0xe8206000-0xe8206fff irq 17 at device 4.1 on pci4
usb2: OHCI version 1.0
usb2: <NEC uPD 9210 USB controller> on ohci2
usb2: USB revision 1.0
uhub2: NEC OHCI root hub, class 9/0, rev 1.00/1.00, addr 1
uhub2: 2 ports with 2 removable, self powered
ehci0: <NEC uPD 720100 USB 2.0 controller> mem 0xe8209000-0xe82090ff irq 18 at device 4.2 on pci4
usb3: EHCI version 0.95
usb3: companion controllers, 3 ports each: usb1 usb2
usb3: <NEC uPD 720100 USB 2.0 controller> on ehci0
usb3: USB revision 2.0
uhub3: NEC EHCI root hub, class 9/0, rev 2.00/1.00, addr 1
uhub3: 5 ports with 5 removable, self powered
uhub4: Belkin Components product 0x0234, class 9/0, rev 2.00/1.00, addr 2
uhub4: single transaction translator
uhub4: 4 ports with 4 removable, self powered



>Description:


Trying to connect a SCSI tape drive (an HP DLT 4000) via a Belkin
USB<->SCSI translator results in near-instant panic with an integer
divide fault.  This is unfriendly.

I analyzed the crash a bit and it looks like CAM is identifying the device
as a da-type, as the panic is via dadone(), which eventually causes
cam_calc_geometry() to fall over itself trying to calculate geometry using
garbage values for sec_size and volume_size.  Here's the traceback, btw:

#22 0xc0633073 in __qdivrem (uq=Unhandled dwarf expression opcode 0x93
) at /usr/src/sys/libkern/qdivrem.c:97
#23 0xc06334be in __udivdi3 (a=1801810543, b=0)
    at /usr/src/sys/libkern/udivdi3.c:47
#24 0xc042f166 in cam_calc_geometry (ccg=0xe6f0b8f8, extended=1)
    at /usr/src/sys/cam/cam.c:376
#25 0xc0497442 in umass_cam_action (sim=0xc2ff3dc0, ccb=0xe6f0b8f8)
    at /usr/src/sys/dev/usb/umass.c:2580
#26 0xc04332e2 in xpt_action (start_ccb=0xe6f0b8f8)
    at /usr/src/sys/cam/cam_xpt.c:3076
#27 0xc043fab9 in dasetgeom (periph=0x0, block_len=0, maxsector=1801810542)
    at /usr/src/sys/cam/scsi/scsi_da.c:1741
#28 0xc043f3c2 in dadone (periph=0xc4b17900, done_ccb=0xc2f5d000)
    at /usr/src/sys/cam/scsi/scsi_da.c:1395
#29 0xc0436885 in camisr (V_queue=0xc06a1200)
    at /usr/src/sys/cam/cam_xpt.c:7074
#30 0xc04d7919 in ithread_loop (arg=0xc2c2bd00)
    at /usr/src/sys/kern/kern_intr.c:547
#31 0xc04d69b5 in fork_exit (callout=0xc04d77c0 <ithread_loop>, 
    arg=0xc2c2bd00, frame=0xe6f0bd38) at /usr/src/sys/kern/kern_fork.c:791
#32 0xc0613e1c in fork_trampoline () at /usr/src/sys/i386/i386/exception.s:209

Most of this traceback is a red herring, though, since I suspect the real
problem is identifying an sa as a da.  Someone with more knowledge of
this subsystem will have to take it further, though.

I have the dump online and can provide any further information you
require, just let me know.


>How-To-Repeat:


Do what I did.


>Fix:


I wish.


>Release-Note:
>Audit-Trail:
>Unformatted:


More information about the freebsd-bugs mailing list