Re: snd_uaudio: Fatal trap 12: page fault while in kernel mode

From: Fabian Keil <freebsd-listen_at_fabiankeil.de>
Date: Sat, 15 Aug 2009 19:00:36 +0200
Hans Petter Selasky <hselasky_at_c2i.net> wrote:

> On Saturday 15 August 2009 17:43:39 Fabian Keil wrote:
> > I reproducible get the following panic less than a second after
> > inserting a Turtle Beach AudioAdvantage stick with the snd_uaudio
> > module loaded:

> > cpuid = 0; apic id = 00
> > fault virtual address   = 0x20
> > fault code              = supervisor read data, page not present
> > instruction pointer     = 0x20:0xffffffff803f31c1
> > stack pointer           = 0x28:0xffffff803a393440
> > frame pointer           = 0x28:0xffffff803a393460
> > code segment            = base 0x0, limit 0xfffff, type 0x1b
> >                         = DPL 0, pres 1, long 1, def32 0, gran 1
> > processor eflags        = resume, IOPL = 0
> > current process         = 36 (usbus4)
> > panic: from debugger
> > cpuid = 0
> > Uptime: 2m12s

> > #9  0xffffffff805ad04e in trap (frame=0xffffff803a393390) at
> > /usr/src/sys/amd64/amd64/trap.c:345 #10 0xffffffff805943f3 in calltrap ()
> > at /usr/src/sys/amd64/amd64/exception.S:224 #11 0xffffffff803f31c1 in
> > turnstile_broadcast (ts=0x0, queue=0) at
> > /usr/src/sys/kern/subr_turnstile.c:831 #12 0xffffffff803aee70 in
> > _mtx_unlock_sleep (m=0xffffffff81e37120, opts=Variable "opts" is not
> > available. ) at /usr/src/sys/kern/kern_mutex.c:677
> > #13 0xffffffff80331d4f in usbd_do_request_flags (udev=0xffffff003fcfe000,
> > mtx=0xffffffff81e37120, req=0xffffff803a393550, data=0xffffff803a393560,
> > flags=0, actlen=0x0, timeout=5000) at
> > /usr/src/sys/dev/usb/usb_request.c:312
> > #14 0xffffffff824272e2 in uaudio_mixer_get (udev=Variable "udev" is not
> > available. ) at
> > /usr/src/sys/modules/sound/driver/uaudio/../../../../dev/sound/usb/uaudio.c
> >:2961 #15 0xffffffff8242741a in uaudio_mixer_add_ctl (sc=0xffffff003f3c3000,
> > mc=0xffffff803a3938a0) at
> > /usr/src/sys/modules/sound/driver/uaudio/../../../../dev/sound/usb/uaudio.c
> >:1604 #16 0xffffffff82429165 in uaudio_attach (dev=0xffffff003f723400) at
> > /usr/src/sys/modules/sound/driver/uaudio/../../../../dev/sound/usb/uaudio.c
> >:1944 #17 0xffffffff803e1569 in device_attach (dev=0xffffff003f723400) at
> > device_if.h:178 #18 0xffffffff80326941 in usb_probe_and_attach_sub
> > (udev=0xffffff003fcfe000, uaa=0xffffff803a393ae0) at
> > /usr/src/sys/dev/usb/usb_device.c:1146 #19 0xffffffff80326dfd in
> > usb_probe_and_attach (udev=0xffffff003fcfe000, iface_index=Variable
> > "iface_index" is not available. ) at /usr/src/sys/dev/usb/usb_device.c:1305
> > #20 0xffffffff8032f7ca in uhub_explore (udev=0xffffff000380a000) at
> > /usr/src/sys/dev/usb/usb_hub.c:238 #21 0xffffffff8031be61 in
> > usb_bus_explore (pm=Variable "pm" is not available. ) at
> > /usr/src/sys/dev/usb/controller/usb_controller.c:235
> > #22 0xffffffff803319f0 in usb_process (arg=Variable "arg" is not available.
> > ) at /usr/src/sys/dev/usb/usb_process.c:161
> > #23 0xffffffff80398182 in fork_exit (callout=0xffffffff80331930
> > <usb_process>, arg=0xffffff80002dee88, frame=0xffffff803a393c80) at
> > /usr/src/sys/kern/kern_fork.c:838 #24 0xffffffff805948ce in fork_trampoline
> > () at /usr/src/sys/amd64/amd64/exception.S:561 #25 0x0000000000000000 in ??
> > ()
> > #26 0x0000000000000000 in ?? ()
> > #27 0x0000000000000001 in ?? ()
> > #28 0x0000000000000000 in ?? ()
> >
> > This is on:
> > FreeBSD 8.0-BETA2 #3: Fri Aug 14 15:19:08 CEST 2009
> > fk_at_r500.local:/usr/obj/usr/src/sys/ZOEY  amd64 but also happens with a
> > slightly older kernel on i386.

> This issue should have been solved, but it looks like not committed to 8-
> current yet.
> 
> Try fetching latest uaudio.c from USB P4:
> 
> http://perforce.freebsd.org/chv.cgi?CH=167030
> http://perforce.freebsd.org/chv.cgi?CH=167032

Applying these changes indeed solved the problem and the stick is working now.

Thanks a lot.

Fabian

Received on Sat Aug 15 2009 - 15:00:45 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:53 UTC