Corrupted double-linked list (nnrpd, Python, innconfval)

Julien ÉLIE julien at trigofacile.com
Sat Jun 21 11:49:42 UTC 2008


Hi,

If there is a problem when loading a Python access script, I obtain:

13:34 news at news ~/bin/filter% telnet localhost 119
Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'.
200 news.trigofacile.com InterNetNews server INN 2.5.0 (20080611 prerelease) ready
mode reader
502 Internal Error (7).  Goodbye
*** glibc detected *** corrupted double-linked list: 0x080d48a8 ***
Connection closed by foreign host.
zsh: exit 1     telnet localhost 119


I believe it happens here:

void
PY_close_python(void)
{
    if (files != NULL) {
        hash_traverse(files, file_trav, NULL);
-->     hash_free(files);
    }

in nnrpd/python.c

which leads to:

void
hash_free(struct hash *hash)
{
    size_t i;
    void *entry;

    for (i = 0; i < hash->size; i++) {
        entry = hash->table[i];
        if (entry != HASH_EMPTY && entry != HASH_DELETED)
            (*hash->delete)(entry);
    }
    free(hash->table);
--> free(hash);
}

in lib/hashtab.c because if I comment the last "free(hash)", there is no segfault.


Besides, the error is triggered off by innconfval (!) because I have in syslog:

Jun 21 13:34:25 news kernel: innconfval[20725]: segfault at 08000000 eip b7e9e756 esp bfb72514 error 4


I wonder what happens.
Do you have an idea?

Or do you know how I could debug that?  (first of all, how can I find a more extensive
error after the segfault [stack trace?] and how could I attach gdb or valgrind to
innconfval at the moment when innconfval is started?)

-- 
Julien ÉLIE

« -- Ils transportent une arme secrète dans un tonneau !
  -- La cervoise tiède !!!
  -- Non, ça c'est une arme connue. » (Astérix) 



More information about the inn-workers mailing list