[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [leafnode-list] Segmentation error

Nicolas <oxstone@xxxxxxx> writes:

> Program received signal SIGSEGV, Segmentation fault.
> 0x4202d71f in __strtoul_internal () from /lib/i686/libc.so.6
> (gdb) backtrace full
> #0  0x4202d71f in __strtoul_internal () from /lib/i686/libc.so.6
> No symbol table info available.
> #1  0x0804b373 in getgroup (g=0x40265624, server=1)
>     at /usr/include/stdlib.h:308

I'm at a loss here, because the line number information is missing. The
getgroup function is rather longish, so I can't figure which of the many
strtoul calls barfed.

I *guess* it died around line 820, in art = strtoul(fields[0], &q, 10)
-- that'd match this line:

>         fields = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}

and the fact that t and l are non-NULL.

Anyways, I ask for two things:

1. unpack your leafnode-1.9.32 source (or reuse the old unpacked source)
   and patch it with this patch, then recompile (make) and reinstall
   leafnode (make install, do not use make install-strip), see below for

2. See the DEBUGGING section in the README file, it tells you how to
   configure your syslogd to log news output. Oh, and type "touch
   /var/log/news.all" before sending a -HUP to syslogd.

Just save this mail into your leafnode-1.9.32 as "patchmail", then cd
there and type "patch <patchmail", then type "make && make install".

Let me know what it logs, and if it still crashes. Of particular
interest are the "Error: got unparsable XOVER line from server"
lines. By all means, NEVER use cut and paste, but redirect output to a
file, edit the output file (cut irrelevant parts) and use the "insert
file" function of your editor, if in doubt, uuencode.

If you want to attach a file, send it to my private address, the mailing
list software doesn't handle attachments. (it is going to be exchanged
real soon now).

--- ./fetchnews.c.orig	2003-01-15 23:58:57 +0100
+++ ./fetchnews.c	2003-01-15 23:59:30 +0100
@@ -797,7 +797,10 @@
 	    unsigned long art;
 	    const char *t;
 	    char *q;
+	    static mastr *ol;
+	    if (!ol) ol = mastr_new(1024);
+	    mastr_cpy(ol, l);
 	    /* split xover */
 	    for (i = 0; l && l[0] && i < HD_MAX; i++) {
@@ -807,12 +810,20 @@
 		    y[0] = '\0';
 		    l = y + 1;
 		} else {
-		    l = 0;
+		    l = NULL;
+	    /* short line -- log and skip */
+	    if (i < 8) {
+			"%s: Error: got unparsable XOVER line from server, "
+			"too few fields (%ld): \"%s\"",
+			current_server->name, i, mastr_str(ol));
+		continue;
+	    }
 	    for (; i < HD_MAX; i++)
-		fields[i] = 0;
+		fields[i] = NULL;
 	    art = strtoul(fields[0], &q, 10);
 	    if (q && art >= server && art <= last &&
 		stat(t = lookup(fields[h_mid]), &st) != 0) {

Matthias Andree
leafnode-1 download: http://sourceforge.net/projects/leafnode/
leafnode-1 docs/new: http://mandree.home.pages.de/leafnode/
leafnode-2 homepage: http://mandree.home.pages.de/leafnode/beta/

leafnode-list@xxxxxxxxxxxxxxxxxxxxxxxxxxxx -- mailing list for leafnode
To unsubscribe, send mail with "unsubscribe" in the subject to the list