ncplogin panic

John Baldwin john at baldwin.cx
Tue Aug 1 21:32:32 UTC 2006


On Tuesday 01 August 2006 14:28, ejc wrote:
> On 8/1/06, m.ehinger at ltur.de <m.ehinger at 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


More information about the freebsd-stable mailing list