On Fri, Dec 28, 2007 at 02:06:48PM +0100, Martin Michlmayr wrote:
> * Martin Michlmayr <[EMAIL PROTECTED]> [2007-12-28 13:23]:
> > I need to check after the installation is done whether/how I can
> > reproduce this.
> 
> Seems like I can:
> 
> netwinder:~# /etc/cron.daily/man-db
> *** glibc detected *** /usr/bin/mandb: free(): invalid next size (fast): 
> 0x000c28e8 ***
> /etc/cron.daily/man-db: line 33:  1063 Aborted                 
> start-stop-daemon --start --pidfile /dev/null --startas /usr/bin/mandb 
> --oknodo --chuid man -- --no-purge --quiet
> netwinder:~# /etc/cron.daily/man-db
> *** glibc detected *** /usr/bin/mandb: free(): invalid next size (fast): 
> 0x000c28e8 ***
> /etc/cron.daily/man-db: line 33:  1202 Aborted                 
> start-stop-daemon --start --pidfile /dev/null --startas /usr/bin/mandb 
> --oknodo --chuid man -- --no-purge --quiet
> netwinder:~#
> 
> What other information would you like to have?

Could you try this patch (thanks to Ivan Shmakov) and see if it fixes it
for you?

--- lib/hashtable.c     2007-12-31 16:16:15 +0000
+++ lib/hashtable.c     2007-12-31 17:03:16 +0000
@@ -97,25 +97,38 @@
        return ht;
 }
 
-/* Return pointer to definition of s, or NULL if it doesn't exist. */
-void *hash_lookup (const struct hashtable *ht, const char *s, size_t len)
+/* Return pointer to hash entry structure containing s, or NULL if it
+ * doesn't exist.
+ */
+static void *hash_lookup_structure (const struct hashtable *ht,
+                                   const char *s, size_t len)
 {
        struct nlist *np;
 
        for (np = ht->hashtab[hash (s, len)]; np; np = np->next) {
                if (strncmp (s, np->name, len) == 0)
-                       return np->defn;
+                       return np;
        }
        return NULL;
 }
 
+/* Return pointer to definition of s, or NULL if it doesn't exist. */
+void *hash_lookup (const struct hashtable *ht, const char *s, size_t len)
+{
+       struct nlist *np = hash_lookup_structure (ht, s, len);
+       if (np)
+               return np->defn;
+       else
+               return NULL;
+}
+
 /* Return structure containing defn, or NULL if unable to store. */
 struct nlist *hash_install (struct hashtable *ht, const char *name, size_t len,
                            void *defn)
 {
        struct nlist *np;
 
-       np = hash_lookup (ht, name, len);
+       np = hash_lookup_structure (ht, name, len);
        if (np) {
                if (np->defn)
                        ht->free_defn (np->defn);

Thanks,

-- 
Colin Watson                                       [EMAIL PROTECTED]



-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to