Under heavy system load, the ALSA driver for the Emagic EMI 2|6 USB audio device crashes in the kernel with a message: Unable to handle kernel NULL pointer dereference at virtual address 00000050 I'm defining heavy load as ripping a CD/DVD and/or compiling ebuilds. While reproducable, the actual load that causes the crash seems variable. Reproducible: Sometimes Steps to Reproduce: 1. Play audio from XMMS 2. exert heavy system load as defined above 3. watch XMMS crash and dmesg report a kernel stack trace Actual Results: Unable to handle kernel NULL pointer dereference at virtual address 00000050 printing eip: c2a4035a *pde = 00000000 Oops: 0000 2.4.22-aa1 #1 Tue Nov 11 00:10:44 EST 2003 CPU: 0 EIP: 0010:[<c2a4035a>] Not tainted EFLAGS: 00010046 eax: 00000000 ebx: 00000000 ecx: 00000000 edx: 00078280 esi: 00000000 edi: c25b3c0c ebp: c29df400 esp: c43f5edc ds: 0018 es: 0018 ss: 0018 Process xmms (pid: 1763, stackpage=c43f5000) Stack: c25b3cec 00000000 c2a40928 c25b3c0c c29df400 00000000 c0105b78 c4728000 c26592c0 c29df400 00000000 c26592c0 c2a40b4c c25b3c0c c29df400 c2a52c63 c26592c0 00000001 c43f4000 c26592c0 c26592c0 423fe964 c2a55dd0 c2a5559a Call Trace: [<c2a40928>] [<c0105b78>] [<c2a40b4c>] [<c2a52c63>] [<c2a55dd0>] [<c2a5559a>] [<c2a557a6>] [<c011d5b0>] [<c2a55dd0>] [<c014a4ac>] [<c0107287>] Modules: [(snd-usb-audio:<c2a40060>:<c2a4a560>)] [(snd-pcm:<c2a50060>:<c2a5ef00>)] Code: 8b 46 50 8b 50 0c 89 56 40 8b 40 04 39 d1 8b 40 04 89 46 10 Expected Results: Not crashed the kernel, kepy playing audio under heavy system load. all packages unmasked default ebuilds from portage XMMS XMMS ALSA driver ALSA bash-2.05b# emerge --info Portage 2.0.49-r15 (default-x86-1.4, gcc-3.2.3, glibc-2.3.2-r1, 2.4.22-aa1) ================================================================= System uname: 2.4.22-aa1 i686 AMD Athlon(tm) XP 2200+ Gentoo Base System version 1.4.3.10 ACCEPT_KEYWORDS="x86" AUTOCLEAN="yes" CFLAGS="-O2 -march=athlon-xp -pipe" CHOST="i686-pc-linux-gnu" COMPILER="gcc3" CONFIG_PROTECT="/etc /var/qmail/control /usr/kde/2/share/config /usr/kde/3/share /config /usr/X11R6/lib/X11/xkb /usr/kde/3.1/share/config /usr/share/config" CONFIG_PROTECT_MASK="/etc/gconf /etc/env.d" CXXFLAGS="-O2 -march=athlon-xp -pipe" DISTDIR="/usr/portage/distfiles" FEATURES="sandbox ccache autoaddcvs" GENTOO_MIRRORS="ftp://ibiblio.org/pub/Linux/distributions/gentoo/ http://gentoo. noved.org/ http://mirrors.tds.net/gentoo http://www.gtlib.cc.gatech.edu/pub/gent oo ftp://gentoo.mirrors.pair.com/" MAKEOPTS="-j2" PKGDIR="/usr/portage/packages" PORTAGE_TMPDIR="/var/tmp" PORTDIR="/usr/portage" PORTDIR_OVERLAY="" SYNC="rsync://rsync.gentoo.org/gentoo-portage" USE="x86 oss apm avi crypt cups encode foomaticdb gif jpeg libg++ libwww mad mik mod ncurses nls pdflib png spell truetype xml2 xmms xv zlib gdbm berkdb slang re adline svga tcltk java sdl gpm tcpd pam ssl perl python imlib oggvorbis motif op engl mozilla cdr X gtk -gnome qt kde -arts -esd alsa jack mpeg quicktime dvd mys ql lirc aalib"
can you run that through ksymoops, and also try to reproduce with a vanilla kernel
As requested. I noticed that the mii module, whcih is used by via-rhine (my ethernet card) did something right before the crash, but the output of /proc/pci says it's on a sepperate IRQ.: >>EIP; c2a4035a <[snd-usb-audio]prepare_playback_sync_urb+a/40> <===== >>edi; c25b3c0c <[mii].text.end+5503f6/5a084a> >>ebp; c29df400 <[snd-seq].data.end+11677d/1573dd> >>esp; c43f5edc <[snd]snd_sndstat_proc_entry+197e49c/18920620> Trace; c2a40928 <[snd-usb-audio]start_urbs+68/170> Trace; c0105b78 <__switch_to+f8/100> Trace; c2a40b4c <[snd-usb-audio]snd_usb_pcm_trigger+3c/60> Trace; c2a52c63 <[snd-pcm]snd_pcm_start+e3/140> Trace; c2a55dd0 <[snd-pcm]snd_pcm_playback_ioctl+0/40> Trace; c2a5559a <[snd-pcm]snd_pcm_common_ioctl1+16a/320> Trace; c2a557a6 <[snd-pcm]snd_pcm_playback_ioctl1+56/350> Trace; c011d5b0 <process_timeout+0/10> Trace; c2a55dd0 <[snd-pcm]snd_pcm_playback_ioctl+0/40> Trace; c014a4ac <sys_ioctl+bc/25d> Trace; c0107287 <system_call+33/38> Code; c2a4035a <[snd-usb-audio]prepare_playback_sync_urb+a/40> 00000000 <_EIP>: Code; c2a4035a <[snd-usb-audio]prepare_playback_sync_urb+a/40> <===== 0: 8b 46 50 mov 0x50(%esi),%eax <===== Code; c2a4035d <[snd-usb-audio]prepare_playback_sync_urb+d/40> 3: 8b 50 0c mov 0xc(%eax),%edx Code; c2a40360 <[snd-usb-audio]prepare_playback_sync_urb+10/40> 6: 89 56 40 mov %edx,0x40(%esi) Code; c2a40363 <[snd-usb-audio]prepare_playback_sync_urb+13/40> 9: 8b 40 04 mov 0x4(%eax),%eax Code; c2a40366 <[snd-usb-audio]prepare_playback_sync_urb+16/40> c: 39 d1 cmp %edx,%ecx Code; c2a40368 <[snd-usb-audio]prepare_playback_sync_urb+18/40> e: 8b 40 04 mov 0x4(%eax),%eax Code; c2a4036b <[snd-usb-audio]prepare_playback_sync_urb+1b/40> 11: 89 46 10 mov %eax,0x10(%esi)
Again, as promised I built a vanilla kernel from my aa-sources .config with 'make oldconfig' and I cannot reproduce the crash. Playing USB audio while riping a CD, compiling an ebuild and playing television at the same time didn't crash it. Looks like it's either aa-sources or my hardware, which is a cheap VIA motherboard. I don't have any other OS on this hardware so I can't really compare, nor would I know what to look for. -lee
Well, here I go talking to myself again but... The crash went away when I pluged in the AC adaptor for the USB device. Looks like the culprit is cheap hardware. I changed the resolution to UPSTREAM because while not exactly a bug in the programmer's hands, I would hope there is a better way to handle this in software besides crashing the kernel. I know there are others out there like me that have a cheap motherboard and may not realize that plugging the device into the wall fixes some USB problems. I'm forwarding this URL to the ALSA-dev list. Oh my god Gentoo rocks.