PROBLEM: snd-usb-audio (I think) hangs apps ( audacious mediaplayer ) in 'D' state, linux = 2.6.18.3

From: Mike Mattie
Date: Fri Dec 01 2006 - 01:22:46 EST


lkml,

I use a soundblaster audigy 2 NX external sound card in USB 2.0 high
speed mode.

Until 2.6.18 pausing the player would instantly 'D' state
audacious, requiring a re-boot. I thought it went away in 2.6.18 but
it recently hung again when the system was under heavy load. This
most recent hang occured while playing for the first
time, and produced a 'Zl' state in audacious instead of a D state.

mattie 1348 2.5 0.0 0 0 ? Zl 18:30 3:18 [audacious] <defunct>

Attempting to cat /proc/asound/NX/audigy2nx also produced a hung
process.

mattie 29778 0.0 0.0 1496 368 ? D 19:30 0:00 cat audigy2nx
mattie 29813 0.0 0.2 4232 1248 ? DL 19:40 0:00 sox /usr/home/mattie/system/sounds/kramer-dog.wav -t alsa default
mattie 29843 0.0 0.0 1500 368 ? D 19:47 0:00 cat audigy2nx

here is the ver_linux output as recommended:

Linux reforged 2.6.18.3 #1 PREEMPT Mon Nov 20 02:49:10 PST 2006 i686
AMD Athlon( tm) XP 3000+ AuthenticAMD GNU/Linux

Gnu C 4.1.1
Gnu make 3.81
binutils 2.17.50.0.3
util-linux 2.12r
mount 2.12r
module-init-tools 3.2.2
e2fsprogs 1.39
xfsprogs 2.7.11
Linux C Library > libc.2.4
Dynamic linker (ldd) 2.4
Procps 3.2.6
Net-tools 1.60
Kbd 1.12
Sh-utils 6.4
udev 103
Modules Loaded snd_usb_audio snd_usb_lib snd_hwdep snd_via82xx
snd_ac97_ codec snd_ac97_bus snd_mpu401_uart

snapshot of the interrupt table:

CPU0
0: 36131491 IO-APIC-edge timer
1: 247883 IO-APIC-edge i8042
8: 2 IO-APIC-edge rtc
9: 0 IO-APIC-level acpi
14: 345469 IO-APIC-edge ide0
15: 84136 IO-APIC-edge ide1
16: 10840911 IO-APIC-level radeon@pci:0000:01:00.0
17: 116010 IO-APIC-level eth0
18: 415161 IO-APIC-level ide2, ide3
20: 11715665 IO-APIC-level ehci_hcd:usb1, uhci_hcd:usb2,uhci_hcd:usb3, uhci_hcd:usb4, uhci_hcd:usb5 21: 0
IO-APIC-level VIA8237 NMI: 0
LOC: 36133430
ERR: 0
MIS: 0

attachments:

* kernel config is attached as: kernel-config-2.6.18.3

* audacious in 'D' state /proc<pid> dump: audacious-crashed-proc-dump

On a previous hang of audacious I was able to capture information from /proc/<pid> while audacious was hung in a 'D' state.
I had difficulty copying or tar'ing the /proc/<pid> directory even with the paths restricted to plain files. As a work-around
I whipped up a perl script that would dump the /proc/<pid> paths to a single file, listing the path , followed by the contents.

This file is larg'ish and probably pretty ugly, but I have attached it in hope that it may assist in tracking down the problem.

* strace of the cat process that hung: hung-cat-in-proc-asound-NX-audigy2nx

my apologies to cat owners. I was unable to ptrace attach to the zombied audacious or a cat
process, so I ran a strace.

A friend has suggested compiling with ingo's lock debugging which I will do. I don't mind recompiling so
any suggestions for how to capture more information from the kernel would be appreciated. I will probably
look into kexec crash dump tonight.

Let me know if this report can be improved , or re-directed. Any help appreciated. Thanks.

Mike Mattie - codermattie@xxxxxxxxx




Attachment: kernel-config-2.6.18.3
Description: Binary data

Attachment: hung-cat-in-proc-asound-NX-audigy2nx
Description: Binary data

Attachment: audacious-crashed-proc-dump.gz
Description: GNU Zip compressed data

Attachment: signature.asc
Description: PGP signature