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>