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>