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

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


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

13:34 news at news ~/bin/filter% telnet localhost 119
Connected to localhost.localdomain.
Escape character is '^]'.
200 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:

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

in nnrpd/python.c

which leads to:

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)
--> 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