Help: downloading a file causes kernel panic w/ 7.0-R and rum

Alphons "Fonz" van Werven a.j.werven at student.utwente.nl
Sat Mar 8 21:42:23 UTC 2008


Can somebody please help me with the following:

I'm connecting to the Internet using a (Cisco) Linksys WUSB54GC wireless USB
adapter with FreeBSD 7.0-RELEASE and its rum driver.

The device gets recognized, wpa_supplicant can associate to the WLAN, DHCP
obtains an IP address, all works fine. I can browse the Web with Lynx no
problems. But when I try to download a larger file (e.g. fetch a port or
package...), sooner or later (and usually sooner rather than later) a page
fault occurs and the kernel panics.

I've examined several crash dumps and they all mention the same instruction
pointer (for the standard GENERIC kernel that comes with 7.0-RELEASE):

Fatal trap 12: page fault while in kernel mode
cpuid = 0; apic id = 00
fault virtual address   = 0x12
fault code              = supervisor read, page not present
instruction pointer     = 0x20:0xc06b9e7a
stack pointer           = 0x28:0xe58f2be4
frame pointer           = 0x28:0xe58f2bfc
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 (irq23: uhci0 ehci0)
trap number             = 12
panic: page fault
cpuid = 0
Uptime: 1m9s
Physical memory: 2033 MB
Dumping 179 MB: 164 148 132 116 (CTRL-C to abort)  100 84 68 52 36 20 4

#0  doadump () at pcpu.h:195
195     pcpu.h: No such file or directory.
         in pcpu.h

This can be traced back to somewhere within the rum driver:

(kgdb) list *0xc06b9e7a
0xc06b9e7a is in rum_txeof (/usr/src/sys/dev/usb/if_rum.c:842).
837     {
838             struct rum_tx_data *data = priv;
839             struct rum_softc *sc = data->sc;
840             struct ifnet *ifp = sc->sc_ic.ic_ifp;
841
842             if (data->m->m_flags & M_TXCB)
843                     ieee80211_process_callback(data->ni, data->m,
844                             status == USBD_NORMAL_COMPLETION ? 0 : 
ETIMEDOUT
);
845
846             if (status != USBD_NORMAL_COMPLETION) {
(kgdb)

Thanks in advance for any help,

Alphons

-- 
All right, that does it Bill [Donahue]. I'm pretty sure that killing Jesus
is not very Christian.
                              -- pope Benedict XVI, South Park episode #158



More information about the freebsd-questions mailing list