Mikulas Patocka <address@hidden> wrote:
I got this message from du from coreutils 5.2.1:
du: fts_read failed: No such file or directory
*** glibc detected *** corrupted double-linked list: 0x0806c390 ***
I was sometimes able reproduce on an AFS filesystem. It turned out that
AFS filesystem changes inode numbers or device numbers, so
fts_safe_changedir called at the end of fts_read fails. fts_read sets
FTS_STOP, returns NULL and lets fts_cur to point to just freed entry few
lines above (free(tmp)). The next call to fts_close will do a double-free.
This patch fixes the problem in this situation (and other possible
scenarios resulting from various syscalls failing) --- however you should
better go through the whole code for handling of fts tree and check it.
Thanks for the report and patch.
That bug was fixed almost exactly a year ago (see the 1.20->1.21 delta
of fts.c for a slightly different change).
The latest test release is here:
ftp://alpha.gnu.org/gnu/coreutils/coreutils-5.90.tar.gz
ftp://alpha.gnu.org/gnu/coreutils/coreutils-5.90.tar.bz2