Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 14 Sep 2002 22:06:27 -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:  <20020915020627.GA241@papagena.rockefeller.edu>
In-Reply-To: <Pine.BSF.4.21.0209131109450.76610-100000@InterJet.elischer.org>
References:  <20020913121704.GA286@papagena.rockefeller.edu> <Pine.BSF.4.21.0209131109450.76610-100000@InterJet.elischer.org>

next in thread | previous in thread | raw e-mail | index | archive | help
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




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20020915020627.GA241>