atom feed9 messages in org.freebsd.freebsd-usbusb/101096: USB WLAN occasionally cau...
FromSent OnAttachments
Pascal G. HofsteeJul 31, 2006 1:20 pm 
Hans Petter SelaskyJul 31, 2006 2:32 pm 
Hans Petter SelaskyJul 31, 2006 2:40 pm 
Pascal G. HofsteeJul 31, 2006 9:57 pm 
Pascal G. HofsteeJul 31, 2006 10:00 pm 
Hans Petter SelaskyAug 28, 2006 7:43 pm 
Hans Petter SelaskyAug 28, 2006 7:50 pm 
Pascal G. HofsteeAug 29, 2006 3:57 am 
Pascal G. HofsteeAug 29, 2006 4:00 am 
Subject:usb/101096: USB WLAN occasionally causes kernel-panics during large downloads
From:Hans Petter Selasky (hsel@c2i.net)
Date:Jul 31, 2006 2:40:06 pm
List:org.freebsd.freebsd-usb

The following reply was made to PR usb/101096; it has been noted by GNATS.

From: Hans Petter Selasky <hsel@c2i.net> To: free@freebsd.org Cc: "Pascal G. Hofstee" <cael@gmail.com>, free@freebsd.org Subject: Re: usb/101096: USB WLAN occasionally causes kernel-panics during large
downloads Date: Mon, 31 Jul 2006 16:32:55 +0200

On Monday 31 July 2006 15:18, Pascal G. Hofstee wrote:

Number: 101096 Category: usb Synopsis: USB WLAN occasionally causes kernel-panics during large downloads Confidential: no Severity: critical Priority: medium Responsible: freebsd-usb State: open Quarter: Keywords: Date-Required: Class: sw-bug Submitter-Id: current-users Arrival-Date: Mon Jul 31 13:20:13 GMT 2006 Closed-Date: Last-Modified: Originator: Pascal G. Hofstee Release: FreeBSD/i386 6.1-RELEASE Organization: Environment:

FreeBSD chekov.ufp.fli4l 6.1-RELEASE FreeBSD 6.1-RELEASE #0: Sat Jul 29 19:29:11 CEST 2006 pas@aragorn.alex:/usr/obj/usr/src/sys/CHEKOV i386

Description:

DUring downloads of large documentrs over my USB WLAN interface (if_ural driver) the system occasionally breaks down because of kernel-panics.

Script started on Mon Jul 32 14:59:09 2006 [GDB will not be able to debug user-mode threads: /usr/lib/libthread_db.so: Undefined symbol "ps_pglobal_lookup"] GNU gdb 6.1.1 [FreeBSD] Copyright 2004 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "i386-marcel-freebsd".

Unread portion of the kernel message buffer:

Fatal trap 12: page fault while in kernel mode fault virtual address = 0x4 fault code = supervisor read, page not present instruction pointer = 0x20:0xc077be82 stack pointer = 0x28:0xcc1b1bb4 frame pointer = 0x28:0xcc1b1bd4 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 = 23 (irq10: pcm0 uhci0+) trap number = 12 panic: page fault Uptime: 1d1h7m46s Dumping 255 MB (2 chunks) chunk 0: 1MB (159 pages) ... ok chunk 1: 255MB (65276 pages) 240 224 208 192 176 160 144 128 112 96 80 64 48 32 16

#0 doadump () at pcpu.h:165 165 pcpu.h: No such file or directory. in pcpu.h (kgdb) bt full #0 doadump () at pcpu.h:165 No locals. #1 0xc06cdbd7 in boot (howto=260) at /usr/src/sys/kern/kern_shutdown.c:402 first_buf_printf = 1 #2 0xc06cdf19 in panic (fmt=0xc097a0bb "%s") at /usr/src/sys/kern/kern_shutdown.c:558 td = (struct thread *) 0xc253d300 bootopt = 260 newpanic = 0 ap = 0xc253d300 "" buf = "page fault", '\0' <repeats 245 times> #3 0xc092b73c in trap_fatal (frame=0xcc1b1b74, eva=0) at /usr/src/sys/i386/i386/trap.c:836 code = 40 type = 12 ss = 40 esp = 0 softseg = {ssd_base = 0, ssd_limit = 1048575, ssd_type = 27, ssd_dpl = 0, ssd_p = 1, ssd_xx = 0, ssd_xx1 = 0, ssd_def32 = 1, ssd_gran = 1} msg = 0x0 #4 0xc092b412 in trap_pfault (frame=0xcc1b1b74, usermode=0, eva=4) at /usr/src/sys/i386/i386/trap.c:744 va = 0 vm = (struct vmspace *) 0x0 map = 0x1 rv = 1 ftype = 1 '\001' td = (struct thread *) 0xc253d300 p = (struct proc *) 0xc260d000 #5 0xc092afad in trap (frame= {tf_fs = -1066598392, tf_es = -1034747864, tf_ds = 40, tf_edi = -1033379840, tf_esi = 0, tf_ebp = -870638636, tf_isp = -870638688, tf_ebx = -1033376556, tf_edx = -1033606400, tf_ecx = -1033699328, tf_eax = 0, tf_trapno = 12, tf_err = 0, tf_eip = -1065894270, tf_cs = 32, tf_eflags = 66182, tf_esp = -1033601280, tf_ss = -1033601248}) at /usr/src/sys/i386/i386/trap.c:434 td = (struct thread *) 0xc253d300 p = (struct proc *) 0xc260d000 sticks = 0 i = 0 ucode = 0 type = 12 code = 0 eva = 4 #6 0xc09174ba in calltrap () at /usr/src/sys/i386/i386/exception.s:139 No locals. #7 0xc077be82 in ieee80211_free_node (ni=0x0) at /usr/src/sys/net80211/ieee80211_node.c:1600 nt = (struct ieee80211_node_table *) 0xc267ecd4 __func__ = "ieee80211_free_node" #8 0xc0638575 in ural_txeof (xfer=0xc2749b00, priv=0xc267ecd4, status=USBD_NORMAL_COMPLETION) at /usr/src/sys/dev/usb/if_ural.c:887 data = (struct ural_tx_data *) 0xc267ecd4 sc = (struct ural_softc *) 0xc267e000 ifp = (struct ifnet *) 0xc269dc00 #9 0xc0655b83 in usb_transfer_complete (xfer=0xc2749b00) at /usr/src/sys/dev/usb/usbdi.c:863 pipe = 0xc27c7700 dmap = (usb_dma_t *) 0xc2749b3c sync = 0 erred = 0 repeat = 0 polling = 0 #10 0xc0644f25 in uhci_idone (ii=0x0) at /usr/src/sys/dev/usb/uhci.c:1499 xfer = 0xc2749b00 upipe = (struct uhci_pipe *) 0xc27c7700 std = (uhci_soft_td_t *) 0xc2646b00 status = 0 nstatus = 0 actlen = 120 #11 0xc0644dd8 in uhci_check_intr (sc=0xc2630000, ii=0xc2749b70) at /usr/src/sys/dev/usb/uhci.c:1374 std = (uhci_soft_td_t *) 0xc2630000 lstd = (uhci_soft_td_t *) 0xc2646b00 status = 0 #12 0xc0644cef in uhci_softintr (v=0xc2630000) at /usr/src/sys/dev/usb/uhci.c:1304 sc = (uhci_softc_t *) 0xc2630000 ii = (uhci_intr_info_t *) 0x0 nextii = (uhci_intr_info_t *) 0xc2721970 #13 0xc0652302 in usb_schedsoftintr (bus=0x0) at /usr/src/sys/dev/usb/usb.c:871 No locals. #14 0xc0644c9c in uhci_intr1 (sc=0xc2630000) at /usr/src/sys/dev/usb/uhci.c:1274 status = 1 ack = 1 #15 0xc0644a8d in uhci_intr (arg=0xc2630000) at /usr/src/sys/dev/usb/uhci.c:1189 sc = (uhci_softc_t *) 0xc2646b00 #16 0xc06b34c8 in ithread_execute_handlers (p=0xc260d000, ie=0xc2539800) at /usr/src/sys/kern/kern_intr.c:684 ih = (struct intr_handler *) 0xc262e600 ihn = (struct intr_handler *) 0xc264a8c0 #17 0xc06b3636 in ithread_loop (arg=0xc263b570) at /usr/src/sys/kern/kern_intr.c:767 intr_event = (struct intr_thread *) 0xc263b570 ie = (struct intr_event *) 0xc2539800 td = (struct thread *) 0xc253d300 p = (struct proc *) 0xc260d000 #18 0xc06b1f3f in fork_exit (callout=0xc06b35c0 <ithread_loop>, arg=0x0, frame=0x0) at /usr/src/sys/kern/kern_fork.c:805 p = (struct proc *) 0xc260d000 td = (struct thread *) 0xc2646b00 #19 0xc091751c in fork_trampoline () at /usr/src/sys/i386/i386/exception.s:208 No locals. (kgdb) Script done on Mon Jul 31 14:59:41 2006

How-To-Repeat:

Usually downloading a rather large document through USB WLAN interface triggers the crashes, e.g. diablo-jdk15, firefox etc.

Hi,

I think the new "if_ural" has this problem fixed, and a couple of others. Could you have tried the following:

I recommend that you fetch all files from SVN. The SVN port is available from /usr/ports/devel/subversion . After Subversion is installed you run:

svn --username anonsvn --password anonsvn checkout svn://svn.turbocat.net/i4b

cd i4b/trunk/i4b/FreeBSD.usb

make S=../src package make install

Follow the "make help" instructions.

It might be a good idea to build all kernel modules.

Before you build the kernel copy the following files into "/usr/src/sys/dev/usb/":

i4b/trunk/i4b/src/sys/dev/usb/if_ural.c i4b/trunk/i4b/src/sys/dev/usb/if_uralreg.h i4b/trunk/i4b/src/sys/dev/usb/if_uralvar.h

NOTE: the kernel build will most likely fail, unless you are using FreeBSD-7-current. If it fails because there are missing product ID defines, then just remove these lines from the "ural_devs" structure in "if_ural.c". If it fails because "IEEE80211_FEXT_SWBMISS" is not defined, then change the failing code to something like this:

#ifdef IEEE80211_FEXT_SWBMISS /* enable SW bmiss handling in sta mode */ ic->ic_flags_ext |= IEEE80211_FEXT_SWBMISS; #endif

Else please report the error, if you cannot resolve it.

--HPS