On Fri, Jan 20, 2006 at 12:30:06PM +0100, Allard Hoeve wrote: > Package: proftpd > Version: 1.2.10-27 > Severity: normal > Tags: patch > > > Dear Maintainer, > > I've backported the 1.2.10-27 package to sarge, in order to fix the signal 11 > problems you addressed lately. However, I'm running into some segfaults > of my own. > > On connection closure (closed by client), proftpd reports a signal 11 in the > logfiles. While not very important, it sure is annoying. > > After debugging the problem, I discovered that the segfault is triggered in > src/netio.c. For some reason, the close function pointer in the ctrl_netio > variable is a nullpointer. The code surrounding the closing of the connection > checks for a nullpointer on the variable, but not on the function > itself. The attached patch fixes the problem for us. > > Please apply. This patch possibly does not fix the underlying problem, but it > fixes the side effects. The patch is sane. >
Uhm, 1.2.10-20 on sarge does not have this kind of issue AFAIK. Did you try it from my repo? Why are you using -27? This is quite strange and as you say the patch does not solve the issue, just remove the effect of a bug somewhere. Could you provide strace, core file, proftpd.conf for a debug-enabled version of the program? > --- proftpd-1.2.10/src/netio.c.old 2004-06-15 16:45:21.000000000 +0000 > +++ proftpd-1.2.10/src/netio.c 2006-01-20 11:01:08.000000000 > +0000 > @@ -205,21 +205,21 @@ > } > > if (nstrm->strm_type == PR_NETIO_STRM_CTRL) { > - res = ctrl_netio ? ctrl_netio->close(nstrm) : > + res = ctrl_netio && ctrl_netio->close ? ctrl_netio->close(nstrm) : > core_ctrl_netio->close(nstrm); > destroy_pool(nstrm->strm_pool); > return res; > } > > if (nstrm->strm_type == PR_NETIO_STRM_DATA) { > - res = data_netio ? data_netio->close(nstrm) : > + res = data_netio && data_netio->close ? data_netio->close(nstrm) : > core_data_netio->close(nstrm); > destroy_pool(nstrm->strm_pool); > return res; > } > > if (nstrm->strm_type == PR_NETIO_STRM_OTHR) { > - res = othr_netio ? othr_netio->close(nstrm) : > + res = othr_netio && othr_netio->close ? othr_netio->close(nstrm) : > core_othr_netio->close(nstrm); > destroy_pool(nstrm->strm_pool); > return res; -- Francesco P. Lovergine -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]