Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 1 Aug 2006 15:15:37 -0400
From:      John Baldwin <john@baldwin.cx>
To:        freebsd-stable@freebsd.org
Cc:        ejc <eric.j.christeson@gmail.com>, "m.ehinger@ltur.de" <m.ehinger@ltur.de>
Subject:   Re: ncplogin panic
Message-ID:  <200608011515.37682.john@baldwin.cx>
In-Reply-To: <7e3339060608011128rd7034ebg6f7dd029a00c4f2@mail.gmail.com>
References:  <OF7528D9D2.2C92731A-ONC12571BD.00292BB3-C12571BD.002A2EAE@gateway-inter.net> <7e3339060608011128rd7034ebg6f7dd029a00c4f2@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tuesday 01 August 2006 14:28, ejc wrote:
> On 8/1/06, m.ehinger@ltur.de <m.ehinger@ltur.de> wrote:
> >
> > Hi,
> >
> > i had the same problem. See my thread on the freebsd-fs mailinglist
> >
> > http://lists.freebsd.org/pipermail/freebsd-fs/2006-July/002060.html
> >
> >
> > After some research i use the attached patch against ncp_sock.c.
> >
> > So it is not the real solution to this problem it only avoids the panics. 
I'm using it quiet a while without any other known
> > problems.
> > Hopefully someone with more knowledge can help on this.
> >
> > I also get some "md_get_mem(461): incomplete copy" messages which seem to 
do no harm, so far.
> >
> > Regards,
> >
> > Maik
> >
> >
> > !!! Use atyour own risk !!!
> >
> > --- ncp_sock.c.orig            Fri Jan  7 02:45:49 2005
> > +++ ncp_sock.c           Thu Jul 20 14:12:45 2006
> > @@ -189,7 +189,12 @@
> >      struct thread *td = curthread;
> >      struct ucred *cred = NULL;
> >
> > -    return so->so_proto->pr_usrreqs->pru_sopoll(so, events, cred, td);
> > +    if ( td->td_selq.tqh_last == NULL ) {
> > +        printf("ncp_poll: td->td_selq.tqh_last == NULL\n");
> > +        return 0;
> > +    }
> > +
> > +   return so->so_proto->pr_usrreqs->pru_sopoll(so, events, cred, td);
> >  }
> >
> >  int
> >
> > ---- pach ends here ---
> 
> After setting my bios to only use one CPU I was able to get a core
> dump and the panic is happening at the exact same place as yours:
> in selrecord (../../../kern/sys_generic.c:1105)
> 1100             * it alone as we've already added pointed it at us
> and added it to
> 1101             * our list.
> 1102             */
> 1103            if (sip->si_thread == NULL) {
> 1104                    sip->si_thread = selector;
> 1105                    TAILQ_INSERT_TAIL(&selector->td_selq, sip, 
si_thrlist);
> 1106            } else if (sip->si_thread != selector) {
> 1107                    sip->si_flags |= SI_COLL;
> 1108            }
> 1109
> 
> I found your backtrace by digging a bit through the freebsd-fs list
> and we appear to be reaching selrecord though different paths.  Mine
> is in sopoll() at ../../../kern/uipc_socket.c:2059
> 
> I don't know if it makes a difference, but I'm trying to use IP
> instead of IPX to access our server.
> My dump backtrace is attached.

It would be very helpful if you could get the symbols loaded for the modules 
in you backtrace.  You can either compile everything into a static kernel or 
you can use the 'asf' tool to generate appropriate gdb script commands to 
source to get symbols for your modules.  You can find a kldstat gdb command 
in src/tools/debugscripts/ that would be helpful to use with asf.

-- 
John Baldwin



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