Date: Fri, 13 Sep 2002 08:17:04 -0400 From: Rahul Siddharthan <rsidd@online.fr> To: Julian Elischer <julian@elischer.org> Cc: stable@freebsd.org, multimedia@freebsd.org Subject: Re: USB audio kernel panics Message-ID: <20020913121704.GA286@papagena.rockefeller.edu> In-Reply-To: <Pine.BSF.4.21.0209122034530.75586-100000@InterJet.elischer.org> References: <20020913025715.GA9795@papagena.rockefeller.edu> <Pine.BSF.4.21.0209122034530.75586-100000@InterJet.elischer.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Julian Elischer said on Sep 12, 2002 at 20:36:53:
> > I notice that the USB audio driver has been imported into -STABLE
> > recently. I've been using this driver for a few months, and get
> > frequent easily-reproducible kernel panics, which unfortunately I don't
> > have the ability to fix -- but I really don't think the driver is ready
> > for -stable or for 4.7-release.
> >
>
> [...]
> can you do a 'list' here?
> as well as "info locals" and
> print anything that looks suspicious?
I don't know what looks suspicious, but here's the whole lot below --
first for the panic I quoted (pulling out the USB cord while busy),
then for a different panic (starting the KDE artsd daemon).
Thanks, I'd definitely like to see this fixed (and if recording
capabilities are added too, I can finally quit rebooting into linux)
Rahul
------------------
First, for what I sent earlier: pulling out the USB cord
------------------
#16 0xc0235813 in uhci_device_isoc_start (xfer=0xc100d300)
at /usr/src/sys/dev/usb/uhci.c:2097
2097 LIST_INSERT_HEAD(&sc->sc_intrhead, ii, list);
(kgdb) list
2092 if (!ii->isdone) {
2093 printf("uhci_device_isoc_start: not done, ii=%p\n", ii);
2094 }
2095 ii->isdone = 0;
2096 #endif
2097 LIST_INSERT_HEAD(&sc->sc_intrhead, ii, list);
2098
2099 splx(s);
2100
2101 return (USBD_IN_PROGRESS);
(kgdb) info locals
upipe = (struct uhci_pipe *) 0x0
sc = (uhci_softc_t *) 0xc0f9c200
ii = (uhci_intr_info_t *) 0xc0fae8c0
end = (uhci_soft_td_t *) 0x68c840
s = 6867008
i = 0
(kgdb) up
#17 0xc023568f in uhci_device_isoc_transfer (xfer=0xc100d400)
at /usr/src/sys/dev/usb/uhci.c:1991
1991 uhci_device_isoc_start(SIMPLEQ_FIRST(&xfer->pipe->queue));
(kgdb) list
1986 /* insert into schedule, */
1987 uhci_device_isoc_enter(xfer);
1988
1989 /* and put on interrupt list if the pipe wasn't running */
1990 if (!err)
1991 uhci_device_isoc_start(SIMPLEQ_FIRST(&xfer->pipe->queue));
1992
1993 return (err);
1994 }
1995
(kgdb) info locals
xfer = 0xc100d400
err = USBD_NORMAL_COMPLETION
(kgdb) up
#18 0xc023a035 in usbd_transfer (xfer=0xc100d400)
at /usr/src/sys/dev/usb/usbdi.c:285
285 err = pipe->methods->transfer(xfer);
(kgdb) list
280 /* Copy data if going out. */
281 if (!(xfer->flags & USBD_NO_COPY) && size != 0 &&
282 !usbd_xfer_isread(xfer))
283 memcpy(KERNADDR(dmap, 0), xfer->buffer, size);
284
285 err = pipe->methods->transfer(xfer);
286
287 if (err != USBD_IN_PROGRESS && err) {
288 /* The transfer has not been queued, so free buffer. */
289 if (xfer->rqflags & URQ_AUTO_DMABUF) {
(kgdb) info locals
xfer = 0xc100d400
pipe = 0xc100d200
dmap = (usb_dma_t *) 0xc100d43c
err = 3228685332
size = 0
s = -1058332080
-----------------
Below, a panic generated by starting up KDE's artsd while the USB device
is plugged in securely.
-----------------
#16 0xc029bb93 in trap (frame={tf_fs = 6815760, tf_es = -1056571376,
tf_ds = 16, tf_edi = 1, tf_esi = -1056113184, tf_ebp = -1070635404,
tf_isp = -1070635452, tf_ebx = -1056138112, tf_edx = 125511200,
tf_ecx = -846746112, tf_eax = 2, tf_trapno = 12, tf_err = 0,
tf_eip = -1071429335, tf_cs = 8, tf_eflags = 66050,
tf_esp = -1057941184, tf_ss = -1056113184})
at /usr/src/sys/i386/i386/trap.c:466
466 (void) trap_pfault(&frame, FALSE, eva);
(kgdb) up
#17 0xc0234929 in uhci_idone (ii=0xc10cfde0)
at /usr/src/sys/dev/usb/uhci.c:1129
1129 for (std = ii->stdstart; std != NULL; std = std->link.std) {
(kgdb) list
1124 uhci_dump_tds(ii->stdstart);
1125 #endif
1126
1127 /* The transfer is done, compute actual length and status. */
1128 actlen = 0;
1129 for (std = ii->stdstart; std != NULL; std = std->link.std) {
1130 nstatus = LE(std->td.td_status);
1131 if (nstatus & UHCI_TD_ACTIVE)
1132 break;
1133
(kgdb) info locals
xfer = 0x68c840
upipe = (struct uhci_pipe *) 0x0
std = (uhci_soft_td_t *) 0x0
status = 1
nstatus = 0
actlen = 194
(kgdb) up
#18 0xc0234864 in uhci_check_intr (sc=0xc0ebb000, ii=0xc10cfde0)
at /usr/src/sys/dev/usb/uhci.c:1057
1057 uhci_idone(ii);
(kgdb) list
1052 return;
1053 }
1054 done:
1055
1056 usb_untimeout(uhci_timeout, ii, ii->timeout_handle);
1057 uhci_idone(ii);
1058 }
1059
1060 /* Called at splusb() */
1061 void
(kgdb) info locals
ii = (uhci_intr_info_t *) 0xc10cfde0
std = (uhci_soft_td_t *) 0x0
lstd = (uhci_soft_td_t *) 0xc0f11940
status = 0
(kgdb) up
#19 0xc02347cf in uhci_intr (arg=0xc0ebb000) at /usr/src/sys/dev/usb/uhci.c:994
994 uhci_check_intr(sc, ii);
(kgdb) list
989 * output on a slow console).
990 * We scan all interrupt descriptors to see if any have
991 * completed.
992 */
993 for (ii = LIST_FIRST(&sc->sc_intrhead); ii; ii = LIST_NEXT(ii, list))
994 uhci_check_intr(sc, ii);
995
996 DPRINTFN(10, ("%s: uhci_intr: exit\n", USBDEVNAME(sc->sc_bus.bdev)));
997
998 sc->sc_bus.intr_context--;
(kgdb) info locals
sc = (uhci_softc_t *) 0xc0ebb000
status = -1056113184
ack = 1
ii = (uhci_intr_info_t *) 0xc10cfde0
(kgdb) up
#20 0xc02a6c2d in intr_mux (arg=0xc0714180)
at /usr/src/sys/i386/isa/intr_machdep.c:582
582 p->handler(p->argument);
(kgdb) list
577 intrec *p;
578 intrmask_t oldspl;
579
580 for (p = arg; p != NULL; p = p->next) {
581 oldspl = splq(p->mask);
582 p->handler(p->argument);
583 splx(oldspl);
584 }
585 }
586
(kgdb) info locals
p = (intrec *) 0xc0714180
oldspl = 4196352
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-multimedia" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20020913121704.GA286>
