Comment 5 for bug 438248

Revision history for this message
Ævar Arnfjörð Bjarmason (avarab) wrote :

Sorry for not getting back to you earlier. I ran another fsck a while ago followed by a GDB session. The problem is that qsort() is being fed an invalid pointer. But I don't know why though. Here's the most interesting bit:

The other 70MB of the log are attached (bzipped).

(gdb) l
169 static EXT2_QSORT_TYPE ino_cmp(const void *a, const void *b)
170 {
171 const struct hash_entry *he_a = (const struct hash_entry *) a;
172 const struct hash_entry *he_b = (const struct hash_entry *) b;
173
174 return (he_a->ino - he_b->ino);
175 }
176
177 /* Used for sorting the hash entry */
178 static EXT2_QSORT_TYPE name_cmp(const void *a, const void *b)
(gdb) x he_a
0x89fbc1b8: Cannot access memory at address 0x89fbc1b8
(gdb) p he_a
$1 = (const struct hash_entry *) 0x89fbc1b8
(gdb) p *he_a
Cannot access memory at address 0x89fbc1b8
(gdb) p he_b
$2 = (const struct hash_entry *) 0x9fbc1d8
(gdb) p *he_b
$3 = {hash = 1768448865, minor_hash = 17, ino = 3087286648, dir = 0xb8044178}