kern/125914: Ath driver causes kernel panic in 7-STABLE
E Ruggeri
smallhand at crawblog.com
Thu Jul 24 02:30:02 UTC 2008
>Number: 125914
>Category: kern
>Synopsis: Ath driver causes kernel panic in 7-STABLE
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Thu Jul 24 02:30:01 UTC 2008
>Closed-Date:
>Last-Modified:
>Originator: E Ruggeri
>Release: 7-STABLE
>Organization:
None
>Environment:
FreeBSD bigclaw.crawblog.com 7.0-STABLE FreeBSD 7.0-STABLE #0: Wed Jul 23 08:28:49 EDT 2008 smallhand at bigclaw.crawblog.com:/usr/obj/usr/src/sys/GDEBUG i386
>Description:
Ath driver works under 7.0-RELEASE. However, when running under 7-STABLE (updated 7/22/08), network use causes kernel panic. Connection to the wireless network is achieved (IP address assigned), and generally a few webpages will load. But kernel eventually panics within a minute of network use.
Kernel is the generic 7-STABLE kernel with the 4BSD scheduler swapped for ULE and various debug options enabled (KDB, DDB, INVARIANTS, WITNESS).
I have a core dump. Here is a backtrace from kgdb:
Unread portion of the kernel message buffer:
panic: no buf for txfrag
cpuid = 0
KDB: enter: panic
panic: from debugger
cpuid = 0
Uptime: 8m4s
Physical memory: 2018 MB
Dumping 75 MB: 60 44 28 12
Reading symbols from /boot/kernel/acpi.ko...Reading symbols from /boot/kernel/acpi.ko.symbols...done.
done.
Loaded symbols for /boot/kernel/acpi.ko
#0 doadump () at pcpu.h:195
195 __asm __volatile("movl %%fs:0,%0" : "=r" (td));
(kgdb) bt
#0 doadump () at pcpu.h:195
#1 0xc077d58e in boot (howto=260) at /usr/src/sys/kern/kern_shutdown.c:418
#2 0xc077d853 in panic (fmt=) at /usr/src/sys/kern/kern_shutdown.c:572
#3 0xc04907b7 in db_panic (addr=) at /usr/src/sys/ddb/db_command.c:446
#4 0xc04911bc in db_command (last_cmdp=0xc0bfb9f4, cmd_table=0x0, dopager=1)
at /usr/src/sys/ddb/db_command.c:413
#5 0xc04912ca in db_command_loop () at /usr/src/sys/ddb/db_command.c:466
#6 0xc0492abd in db_trap (type=3, code=0) at /usr/src/sys/ddb/db_main.c:228
#7 0xc07a6276 in kdb_trap (type=3, code=0, tf=0xe572a6a4)
at /usr/src/sys/kern/subr_kdb.c:524
#8 0xc0a7644b in trap (frame=0xe572a6a4) at /usr/src/sys/i386/i386/trap.c:648
#9 0xc0a5bbbb in calltrap () at /usr/src/sys/i386/i386/exception.s:139
#10 0xc07a63fa in kdb_enter_why (why=0xc0b1402b "panic",
msg=0xc0b1402b "panic") at cpufunc.h:60
#11 0xc077d83c in panic (fmt=0xc0add0a6 "no buf for txfrag")
at /usr/src/sys/kern/kern_shutdown.c:556
#12 0xc0530143 in ath_start (ifp=0xc526bc00)
at /usr/src/sys/dev/ath/if_ath.c:1748
#13 0xc080dd19 in if_start (ifp=0xc526bc00) at /usr/src/sys/net/if.c:2704
#14 0xc0813d9b in ether_output_frame (ifp=0xc526bc00, m=0xc5555300)
at /usr/src/sys/net/if_ethersubr.c:405
#15 0xc08143b1 in ether_output (ifp=0xc526bc00, m=0xc5555300, dst=0xc53d98d0,
rt0=0xc59ee000) at /usr/src/sys/net/if_ethersubr.c:374
#16 0xc08409eb in ieee80211_output (ifp=0xc526bc00, m=0xc5555300,
dst=0xc53d98d0, rt0=0xc59ee000)
at /usr/src/sys/net80211/ieee80211_output.c:261
#17 0xc0859b04 in ip_output (m=0xc5555300, opt=0x0, ro=0xe572a888, flags=)
at /usr/src/sys/netinet/ip_output.c:551
#18 0xc08b3a40 in tcp_output (tp=0xc57ca910)
at /usr/src/sys/netinet/tcp_output.c:1135
#19 0xc08afa1b in tcp_do_segment (m=0xc599f800, th=)
at /usr/src/sys/netinet/tcp_input.c:1212
#20 0xc08b1e81 in tcp_input (m=0xc599f800, off0=20)
at /usr/src/sys/netinet/tcp_input.c:845
#21 0xc0857fd0 in ip_input (m=0xc599f800)
at /usr/src/sys/netinet/ip_input.c:665
#22 0xc081e413 in netisr_dispatch (num=2, m=0xc599f800)
at /usr/src/sys/net/netisr.c:185
#23 0xc0814601 in ether_demux (ifp=0xc526bc00, m=0xc599f800)
at /usr/src/sys/net/if_ethersubr.c:834
#24 0xc0814a6f in ether_input (ifp=0xc526bc00, m=0xc599f800)
at /usr/src/sys/net/if_ethersubr.c:692
#25 0xc0830f52 in ieee80211_deliver_data (ic=0xc528122c, ni=0xc59e5000,
m=0xc599f800) at /usr/src/sys/net80211/ieee80211_input.c:779
#26 0xc08367e9 in ieee80211_input (ic=0xc528122c, m=0xc599f800,
ni=0xc59e5000, rssi=48, noise=-95, rstamp=9816)
at /usr/src/sys/net80211/ieee80211_input.c:519
#27 0xc0531c4d in ath_rx_proc (arg=0xc5281000, npending=1)
at /usr/src/sys/dev/ath/if_ath.c:3673
#28 0xc07aff5b in taskqueue_run (queue=0xc526ac00)
at /usr/src/sys/kern/subr_taskqueue.c:255
#29 0xc07b00b8 in taskqueue_thread_loop (arg=0xc5282674)
at /usr/src/sys/kern/subr_taskqueue.c:374
#30 0xc075c888 in fork_exit (callout=0xc07b0050 <taskqueue_thread_loop>,
arg=0xc5282674, frame=0xe572ad38) at /usr/src/sys/kern/kern_fork.c:781
#31 0xc0a5bc30 in fork_trampoline () at /usr/src/sys/i386/i386/exception.s:205
>How-To-Repeat:
Buy a current ThinkPad with a ThinkPad 11a/b/g Wireless LAN Mini Express Adapter (AR5212 chipset). Install 7-STABLE FreeBSD. Connect to wireless network, attempt to load a few websites.
My network card information:
ath0: <Atheros 5212> mem 0xdf2f0000-0xdf2fffff irq 17 at device 0.0 on pci3
ath0: [ITHREAD]
ath0: using obsoleted if_watchdog interface
ath0: Ethernet address: XX:XX:XX:XX:XX:XX
ath0: mac 10.3 phy 6.1 radio 10.2
ath0 at pci0:3:0:0: class=0x020000 card=0x058a1014 chip=0x1014168c rev=0x01 hdr=0x00
vendor = 'Atheros Communications Inc.'
device = 'AR5212 Atheros AR5212 802.11abg wireless'
class = network
subclass = ethernet
>Fix:
Not a fix, but a guess. Panic occurs on line 1748 of if_ath.c. An assertion fails that a pointer is non-null. Anyone who can help would probably know this already though...
1747 bf = STAILQ_FIRST(&frags);
1748 KASSERT(bf != NULL, ("no buf for txfrag"));
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-bugs
mailing list