From owner-freebsd-multimedia Mon Sep 16 10:24:33 2002 Delivered-To: freebsd-multimedia@freebsd.org Received: from mx1.FreeBSD.org (mx1.FreeBSD.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 8CE5D37B400 for ; Mon, 16 Sep 2002 10:24:29 -0700 (PDT) Received: from webmail2.rockefeller.edu (webmail2.rockefeller.edu [129.85.249.102]) by mx1.FreeBSD.org (Postfix) with ESMTP id 5C57443E65 for ; Mon, 16 Sep 2002 10:24:28 -0700 (PDT) (envelope-from rsidd@lpt.ens.fr) Received: from bluerondo.a.la.turk (gendialup20.rockefeller.edu [129.85.131.119]) by webmail2.rockefeller.edu (Switch-2.2.4/Switch-2.2.0) with ESMTP id g8F2AJX10629 for ; Sat, 14 Sep 2002 22:10:20 -0400 (EDT) Received: (qmail 281 invoked by uid 1001); 15 Sep 2002 02:06:27 -0000 Date: Sat, 14 Sep 2002 22:06:27 -0400 From: Rahul Siddharthan To: Julian Elischer Cc: stable@freebsd.org, multimedia@freebsd.org Subject: Re: USB audio kernel panics Message-ID: <20020915020627.GA241@papagena.rockefeller.edu> References: <20020913121704.GA286@papagena.rockefeller.edu> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.3.27i X-Operating-System: FreeBSD 4.7-PRERELEASE i386 Sender: owner-freebsd-multimedia@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.org Julian Elischer said on Sep 13, 2002 at 11:18:54: > > > 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). [....] > > ------------------ > > > > 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 > > print sc->sc_intrhead > and if there is something already on the list, print that. > also print *ii (kgdb) print sc->sc_intrhead $1 = {lh_first = 0x558d026a} (kgdb) print *ii $2 = {sc = 0xc0ebb000, xfer = 0xc100d300, stdstart = 0xc0fa52c0, stdend = 0xc0fa52c0, list = {le_next = 0x558d026a, le_prev = 0xc0ebbc78}, timeout_handle = {callout = 0x0}} It means nothing to me :( > > ----------------- > > > > 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 > > If this really is where the error is.. is it possile something further in the > loop clears std? This is the complete loop, for (std = ii->stdstart; std != NULL; std = std->link.std) { nstatus = LE(std->td.td_status); if (nstatus & UHCI_TD_ACTIVE) break; status = nstatus; if (UHCI_TD_GET_PID(LE(std->td.td_token)) != UHCI_TD_PID_SETUP) actlen += UHCI_TD_GET_ACTLEN(status); } Sorry, this doesn't mean much either to me... is it getting cleared in the loop? Doesn't look like it to me. I checked by creating this panic again, it is again at the same spot. Since it's so trivial to produce this panic, can't whoever merged the code into -stable take a look at it? Or do things work fine on their machine? Rahul To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-multimedia" in the body of the message