Skip to contentSkip to conversation

git clean not working on FreeBSD/NFS

BUG In review Török Edwin 4 participants 10 messages Jun 15, 2016

lore
Share & tools
lore
#0 lore raw

Hi,

I am running git 1.7.1 on a FreeBSD 8 box which has its home dir mounted via NFS (I guess the NFS server is a Linux box).
When running 'git clean -x -f -d' it fails to remove some directories:
warning: failed to remove 'libclamav/.deps/'
warning: failed to remove 'libclamav/.libs/'
warning: failed to remove 'libclamav/c++/.deps/'
warning: failed to remove 'libclamav/c++/.libs/'
warning: failed to remove 'libclamav/c++/llvm/test/CodeGen/X86/Output/'

This causes buildbot managed builds to fail every 2nd time.

Steps to reproduce:
1. FreeBSD 8 with home mounted via NFS (NFS server probably Linux)
2. Checkout ClamAV, and ./configure it (some other autotooled program would work too probably)
3. ./config.status
4. git clean -x -f -d -- libclamav
5. ls -l libclamav/.deps

Step 4. fails, step 5 shows remaining files.
You can repeat steps 3 and 4 to see the failure over and over again. If instead of the 'git clean' you run 'rm -rf' that works!

Looking at the truss output I see that the error is that the directory is not empty (see end of this mail for detailed truss output):
rmdir(0x8011e3080,0x5ff560,0x10,0x2000,0x626298,0x0) ERR#66 'Directory not empty

Which is indeed true, if I run 'ls' on those directories they still have some files in them: git made no attempt to stat/unlink them (it must have missed them during directory listing?).
Here are the remaining files:

$ ls libclamav/.deps
libclamav_la-textnorm.Plo       libclamav_la-upx.Plo            unrar20.Plo
libclamav_la-tnef.Plo           libclamav_la-uuencode.Plo
unrar_iface.Plo
libclamav_la-unarj.Plo          libclamav_la-vba_extract.Plo    unrarcmd.Plo
libclamav_la-uniq.Plo           libclamav_la-version.Plo
unrarfilter.Plo
libclamav_la-unsp.Plo           libclamav_la-wwunpack.Plo       unrarhlp.Plo
libclamav_la-untar.Plo          libclamav_la-yc.Plo             unrarppm.Plo
libclamav_la-unzip.Plo          unrar.Plo                       unrarvm.Plo
libclamav_la-upack.Plo          unrar15.Plo

There is a second box attached to same NFS server, a Linux 2.6.26. I can't reproduce this bug on that box, so I assume this a FreeBSD / or FreeBSD + NFS specific bug.

However this bug reproduces almost always on the FreeBSD box (2 out of 3 tries approximatively).

uname -mrsp: FreeBSD 8.0-RELEASE amd64 amd64

gcc:
Using built-in specs.
Target: amd64-undermydesk-freebsd
Configured with: FreeBSD/amd64 system compiler
Thread model: posix
gcc version 4.2.1 20070719 [FreeBSD]

git --version: git version 1.7.1

There isn't anything relevant in dmesg on the NFS client, and I don't have access to the NFS server.

FWIW running "rm -rf" DOES work!

Relevant part of 'truss git clean -x -f -d -- libclamav':
lstat("libclamav/c++/.deps",{ mode=drwx------ ,inode=3222465128,size=20480,blksize=4096 }) = 0 (0x0) getdirentries(0x5,0x8011e8000,0x1000,0x8011e5128,0xffff80080111e094,0x0)
= 0 (0x0)
lseek(5,0x0,SEEK_SET) = 0 (0x0)
close(5) = 0 (0x0)
lstat("libclamav/cab.c",{ mode=-rw------- ,inode=3535781250,size=18996,blksize=4096 }) = 0 (0x0) lstat("libclamav/cab.h",{ mode=-rw------- ,inode=3535781252,size=1933,blksize=4096 }) = 0 (0x0) lstat("libclamav/cache.c",{ mode=-rw------- ,inode=3535781253,size=19730,blksize=4096 }) = 0 (0x0) lstat("libclamav/cache.h",{ mode=-rw------- ,inode=3535781283,size=1053,blksize=4096 }) = 0 (0x0) lstat("libclamav/chmunpack.c",{ mode=-rw------- ,inode=3535781284,size=22473,blksize=4096 }) = 0 (0x0) lstat("libclamav/chmunpack.h",{ mode=-rw------- ,inode=3535781285,size=3364,blksize=4096 }) = 0 (0x0) lstat("libclamav/clamav.h",{ mode=-rw------- ,inode=3535781286,size=7166,blksize=4096 }) = 0 (0x0) lstat("libclamav/clambc.h",{ mode=-rw------- ,inode=3535781287,size=2738,blksize=4096 }) = 0 (0x0) lstat("libclamav/cltypes.h",{ mode=-rw------- ,inode=3535781288,size=1840,blksize=4096 }) = 0 (0x0) lstat("libclamav/cpio.c",{ mode=-rw------- ,inode=3535781289,size=7978,blksize=4096 }) = 0 (0x0) lstat("libclamav/cpio.h",{ mode=-rw------- ,inode=3535781290,size=971,blksize=4096 }) = 0 (0x0) lstat("libclamav/cvd.c",{ mode=-rw------- ,inode=3535781291,size=16233,blksize=4096 }) = 0 (0x0) lstat("libclamav/cvd.h",{ mode=-rw------- ,inode=3535781292,size=1246,blksize=4096 }) = 0 (0x0) lstat("libclamav/dconf.c",{ mode=-rw------- ,inode=3535781293,size=11601,blksize=4096 }) = 0 (0x0) lstat("libclamav/dconf.h",{ mode=-rw------- ,inode=3535781294,size=3481,blksize=4096 }) = 0 (0x0) lstat("libclamav/default.h",{ mode=-rw------- ,inode=3535781295,size=1308,blksize=4096 }) = 0 (0x0) lstat("libclamav/disasm-common.h",{ mode=-rw------- ,inode=3535781296,size=14271,blksize=4096 }) = 0 (0x0) lstat("libclamav/disasm.c",{ mode=-rw------- ,inode=3535781297,size=78128,blksize=4096 }) = 0 (0x0) lstat("libclamav/disasm.h",{ mode=-rw------- ,inode=3535781298,size=1014,blksize=4096 }) = 0 (0x0) lstat("libclamav/disasmpriv.h",{ mode=-rw------- ,inode=3535781299,size=1678,blksize=4096 }) = 0 (0x0) lstat("libclamav/dlp.c",{ mode=-rw------- ,inode=3535781300,size=13646,blksize=4096 }) = 0 (0x0) lstat("libclamav/dlp.h",{ mode=-rw------- ,inode=3535781301,size=4678,blksize=4096 }) = 0 (0x0) lstat("libclamav/dsig.c",{ mode=-rw------- ,inode=3535781302,size=5612,blksize=4096 }) = 0 (0x0) lstat("libclamav/dsig.h",{ mode=-rw------- ,inode=3535781303,size=1004,blksize=4096 }) = 0 (0x0) lstat("libclamav/elf.c",{ mode=-rw------- ,inode=3535781304,size=20341,blksize=4096 }) = 0 (0x0) lstat("libclamav/elf.h",{ mode=-rw------- ,inode=3535781305,size=2645,blksize=4096 }) = 0 (0x0) lstat("libclamav/encoding_aliases.h",{ mode=-rw------- ,inode=3535781306,size=2010,blksize=4096 }) = 0 (0x0) lstat("libclamav/entconv.c",{ mode=-rw------- ,inode=3535781307,size=20631,blksize=4096 }) = 0 (0x0) lstat("libclamav/entconv.h",{ mode=-rw------- ,inode=3535781308,size=1923,blksize=4096 }) = 0 (0x0) lstat("libclamav/entitylist.h",{ mode=-rw------- ,inode=3535781309,size=32878,blksize=4096 }) = 0 (0x0) lstat("libclamav/execs.h",{ mode=-rw------- ,inode=3535781310,size=1888,blksize=4096 }) = 0 (0x0) lstat("libclamav/explode.c",{ mode=-rw------- ,inode=3535781311,size=7778,blksize=4096 }) = 0 (0x0) lstat("libclamav/explode.h",{ mode=-rw------- ,inode=3533647648,size=1684,blksize=4096 }) = 0 (0x0) lstat("libclamav/filetypes.c",{ mode=-rw------- ,inode=3533647649,size=8010,blksize=4096 }) = 0 (0x0) lstat("libclamav/filetypes.h",{ mode=-rw------- ,inode=3533647650,size=2933,blksize=4096 }) = 0 (0x0) lstat("libclamav/filetypes_int.h",{ mode=-rw------- ,inode=3533647651,size=8669,blksize=4096 }) = 0 (0x0) lstat("libclamav/filtering.c",{ mode=-rw------- ,inode=3533647652,size=23994,blksize=4096 }) = 0 (0x0) lstat("libclamav/filtering.h",{ mode=-rw------- ,inode=3533647653,size=1441,blksize=4096 }) = 0 (0x0) lstat("libclamav/fmap.c",{ mode=-rw------- ,inode=3533647654,size=18843,blksize=4096 }) = 0 (0x0) lstat("libclamav/fmap.h",{ mode=-rw------- ,inode=3533647655,size=1978,blksize=4096 }) = 0 (0x0) lstat("libclamav/fsg.c",{ mode=-rw------- ,inode=3533647656,size=3455,blksize=4096 }) = 0 (0x0) lstat("libclamav/fsg.h",{ mode=-rw------- ,inode=3533647657,size=1009,blksize=4096 }) = 0 (0x0) lstat("libclamav/hashtab.c",{ mode=-rw------- ,inode=3533647658,size=20657,blksize=4096 }) = 0 (0x0) lstat("libclamav/hashtab.h",{ mode=-rw------- ,inode=3533647659,size=4535,blksize=4096 }) = 0 (0x0) lstat("libclamav/htmlnorm.c",{ mode=-rw------- ,inode=3533647660,size=53427,blksize=4096 }) = 0 (0x0) lstat("libclamav/htmlnorm.h",{ mode=-rw------- ,inode=3533647661,size=1513,blksize=4096 }) = 0 (0x0) lstat("libclamav/iana_cctld.h",{ mode=-rw------- ,inode=3533647662,size=11288,blksize=4096 }) = 0 (0x0) lstat("libclamav/iana_tld.h",{ mode=-rw------- ,inode=3533647663,size=17214,blksize=4096 }) = 0 (0x0) lstat("libclamav/inffixed64.h",{ mode=-rw------- ,inode=3533647664,size=8089,blksize=4096 }) = 0 (0x0) lstat("libclamav/inflate64.c",{ mode=-rw------- ,inode=3533647665,size=42823,blksize=4096 }) = 0 (0x0) lstat("libclamav/inflate64.h",{ mode=-rw------- ,inode=3533647666,size=3083,blksize=4096 }) = 0 (0x0) lstat("libclamav/inflate64_priv.h",{ mode=-rw------- ,inode=3533647667,size=8156,blksize=4096 }) = 0 (0x0) lstat("libclamav/is_tar.c",{ mode=-rw------- ,inode=3533647668,size=2212,blksize=4096 }) = 0 (0x0) lstat("libclamav/is_tar.h",{ mode=-rw------- ,inode=3533647669,size=1102,blksize=4096 }) = 0 (0x0) lstat("libclamav/ishield.c",{ mode=-rw------- ,inode=3533647670,size=23291,blksize=4096 }) = 0 (0x0) lstat("libclamav/ishield.h",{ mode=-rw------- ,inode=3533647671,size=934,blksize=4096 }) = 0 (0x0) lstat("libclamav/jsparse",{ mode=drwx------ ,inode=671908298,size=4096,blksize=4096 }) = 0 (0x0) stat("libclamav/jsparse/",{ mode=drwx------ ,inode=671908298,size=4096,blksize=4096 }) = 0 (0x0)
open("libclamav/jsparse/",O_NONBLOCK,022) = 5 (0x5)
fstat(5,{ mode=drwx------ ,inode=671908298,size=4096,blksize=4096 }) = 0 (0x0)
fcntl(5,F_SETFD,FD_CLOEXEC) = 0 (0x0)
fstatfs(0x5,0x7fffffffcdd0,0x8011e5040,0x2,0x0,0x0) = 0 (0x0) getdirentries(0x5,0x8011e8000,0x1000,0x8011e5128,0xfffffffffffffb90,0x0)
= 512 (0x200)
lstat("libclamav/jsparse/future_reserved_words.list",{ mode=-rw------- ,inode=671908299,size=227,blksize=4096 }) = 0 (0x0) lstat("libclamav/jsparse/generated",{ mode=drwx------ ,inode=805472893,size=41,blksize=4096 }) = 0 (0x0) stat("libclamav/jsparse/generated/",{ mode=drwx------ ,inode=805472893,size=41,blksize=4096 }) = 0 (0x0) open("libclamav/jsparse/generated/",O_NONBLOCK,034) = 6 (0x6)
fstat(6,{ mode=drwx------ ,inode=805472893,size=41,blksize=4096 }) = 0 (0x0)
fcntl(6,F_SETFD,FD_CLOEXEC) = 0 (0x0)
fstatfs(0x6,0x7fffffffc960,0x8011e5040,0x3,0x0,0x0) = 0 (0x0) getdirentries(0x6,0x8011e9000,0x1000,0x8011e5188,0xfffffffffffffb90,0x0)
= 512 (0x200)
lstat("libclamav/jsparse/generated/keywords.h",{ mode=-rw------- ,inode=805472894,size=7530,blksize=4096 }) = 0 (0x0) lstat("libclamav/jsparse/generated/operators.h",{ mode=-rw------- ,inode=805472895,size=7473,blksize=4096 }) = 0 (0x0) getdirentries(0x6,0x8011e9000,0x1000,0x8011e5188,0x27,0x27) = 0 (0x0)
lseek(6,0x0,SEEK_SET) = 0 (0x0)
close(6) = 0 (0x0)
lstat("libclamav/jsparse/js-norm.c",{ mode=-rw------- ,inode=671908300,size=42262,blksize=4096 }) = 0 (0x0) lstat("libclamav/jsparse/js-norm.h",{ mode=-rw------- ,inode=671908301,size=1194,blksize=4096 }) = 0 (0x0) lstat("libclamav/jsparse/keywords.list",{ mode=-rw------- ,inode=671908302,size=147,blksize=4096 }) = 0 (0x0) lstat("libclamav/jsparse/lexglobal.h",{ mode=-rw------- ,inode=671908303,size=3087,blksize=4096 }) = 0 (0x0) lstat("libclamav/jsparse/operators.gperf",{ mode=-rw------- ,inode=671908304,size=931,blksize=4096 }) = 0 (0x0) lstat("libclamav/jsparse/special_keywords.list",{ mode=-rw------- ,inode=671908305,size=47,blksize=4096 }) = 0 (0x0) lstat("libclamav/jsparse/textbuf.h",{ mode=-rw------- ,inode=671908306,size=1045,blksize=4096 }) = 0 (0x0) getdirentries(0x5,0x8011e8000,0x1000,0x8011e5128,0x1b,0x1b) = 0 (0x0)
lseek(5,0x0,SEEK_SET) = 0 (0x0)
close(5) = 0 (0x0)
lstat("libclamav/libclamav.map",{ mode=-rw------- ,inode=3533647672,size=3455,blksize=4096 }) = 0 (0x0) lstat("libclamav/line.c",{ mode=-rw------- ,inode=3533647673,size=2715,blksize=4096 }) = 0 (0x0) lstat("libclamav/line.h",{ mode=-rw------- ,inode=3533647674,size=1484,blksize=4096 }) = 0 (0x0) lstat("libclamav/lzma_iface.c",{ mode=-rw------- ,inode=3533647675,size=3180,blksize=4096 }) = 0 (0x0) lstat("libclamav/lzma_iface.h",{ mode=-rw------- ,inode=3533647676,size=1679,blksize=4096 }) = 0 (0x0) lstat("libclamav/macho.c",{ mode=-rw------- ,inode=3533647677,size=14817,blksize=4096 }) = 0 (0x0) lstat("libclamav/macho.h",{ mode=-rw------- ,inode=3533647678,size=1037,blksize=4096 }) = 0 (0x0) lstat("libclamav/matcher-ac.c",{ mode=-rw------- ,inode=3533647679,size=48723,blksize=4096 }) = 0 (0x0) lstat("libclamav/matcher-ac.h",{ mode=-rw------- ,inode=3533647680,size=3570,blksize=4096 }) = 0 (0x0) lstat("libclamav/matcher-bm.c",{ mode=-rw------- ,inode=3533647681,size=11727,blksize=4096 }) = 0 (0x0) lstat("libclamav/matcher-bm.h",{ mode=-rw------- ,inode=3533647682,size=1787,blksize=4096 }) = 0 (0x0) lstat("libclamav/matcher.c",{ mode=-rw------- ,inode=3533647683,size=19988,blksize=4096 }) = 0 (0x0) lstat("libclamav/matcher.h",{ mode=-rw------- ,inode=3533647684,size=5610,blksize=4096 }) = 0 (0x0) lstat("libclamav/mbox.c",{ mode=-rw------- ,inode=3533647685,size=93154,blksize=4096 }) = 0 (0x0) lstat("libclamav/mbox.h",{ mode=-rw------- ,inode=3533647686,size=1481,blksize=4096 }) = 0 (0x0) lstat("libclamav/md5.c",{ mode=-rw------- ,inode=3533647687,size=7560,blksize=4096 }) = 0 (0x0) lstat("libclamav/md5.h",{ mode=-rw------- ,inode=3533647688,size=766,blksize=4096 }) = 0 (0x0) lstat("libclamav/message.c",{ mode=-rw------- ,inode=3533647689,size=58761,blksize=4096 }) = 0 (0x0) lstat("libclamav/message.h",{ mode=-rw------- ,inode=3533647690,size=3440,blksize=4096 }) = 0 (0x0) lstat("libclamav/mew.c",{ mode=-rw------- ,inode=3533647691,size=22062,blksize=4096 }) = 0 (0x0) lstat("libclamav/mew.h",{ mode=-rw------- ,inode=3533647692,size=1356,blksize=4096 }) = 0 (0x0) lstat("libclamav/mpool.c",{ mode=-rw------- ,inode=3533647693,size=19987,blksize=4096 }) = 0 (0x0) lstat("libclamav/mpool.h",{ mode=-rw------- ,inode=3533647694,size=2181,blksize=4096 }) = 0 (0x0) lstat("libclamav/msexpand.c",{ mode=-rw------- ,inode=3533647695,size=3379,blksize=4096 }) = 0 (0x0) lstat("libclamav/msexpand.h",{ mode=-rw------- ,inode=3533647696,size=872,blksize=4096 }) = 0 (0x0) lstat("libclamav/mspack.c",{ mode=-rw------- ,inode=3533647697,size=70371,blksize=4096 }) = 0 (0x0) lstat("libclamav/mspack.h",{ mode=-rw------- ,inode=3533647698,size=11179,blksize=4096 }) = 0 (0x0) lstat("libclamav/nsis",{ mode=drwx------ ,inode=945711766,size=4096,blksize=4096 }) = 0 (0x0) stat("libclamav/nsis/",{ mode=drwx------ ,inode=945711766,size=4096,blksize=4096 }) = 0 (0x0)
open("libclamav/nsis/",O_NONBLOCK,017) = 5 (0x5)
fstat(5,{ mode=drwx------ ,inode=945711766,size=4096,blksize=4096 }) = 0 (0x0)
fcntl(5,F_SETFD,FD_CLOEXEC) = 0 (0x0)
fstatfs(0x5,0x7fffffffcdd0,0x8011e5040,0x2,0x0,0x0) = 0 (0x0) getdirentries(0x5,0x8011e8000,0x1000,0x8011e5128,0xfffffffffffffb90,0x0)
= 512 (0x200)
lstat("libclamav/nsis/bzlib.c",{ mode=-rw------- ,inode=947061420,size=38398,blksize=4096 }) = 0 (0x0) lstat("libclamav/nsis/bzlib_private.h",{ mode=-rw------- ,inode=947061421,size=12997,blksize=4096 }) = 0 (0x0) lstat("libclamav/nsis/infblock.c",{ mode=-rw------- ,inode=947061422,size=22142,blksize=4096 }) = 0 (0x0) lstat("libclamav/nsis/nsis_bzlib.h",{ mode=-rw------- ,inode=947061423,size=5987,blksize=4096 }) = 0 (0x0) lstat("libclamav/nsis/nsis_zconf.h",{ mode=-rw------- ,inode=947061424,size=74,blksize=4096 }) = 0 (0x0) lstat("libclamav/nsis/nsis_zlib.h",{ mode=-rw------- ,inode=947061425,size=7753,blksize=4096 }) = 0 (0x0) lstat("libclamav/nsis/nsis_zutil.h",{ mode=-rw------- ,inode=947061426,size=1864,blksize=4096 }) = 0 (0x0) lstat("libclamav/nsis/nulsft.c",{ mode=-rw------- ,inode=947061427,size=13446,blksize=4096 }) = 0 (0x0) lstat("libclamav/nsis/nulsft.h",{ mode=-rw------- ,inode=947061429,size=869,blksize=4096 }) = 0 (0x0) getdirentries(0x5,0x8011e8000,0x1000,0x8011e5128,0x17,0x17) = 0 (0x0)
lseek(5,0x0,SEEK_SET) = 0 (0x0)
close(5) = 0 (0x0)
lstat("libclamav/ole2_extract.c",{ mode=-rw------- ,inode=3533647699,size=29069,blksize=4096 }) = 0 (0x0) lstat("libclamav/ole2_extract.h",{ mode=-rw------- ,inode=3533647700,size=987,blksize=4096 }) = 0 (0x0) lstat("libclamav/others.c",{ mode=-rw------- ,inode=3533647701,size=25145,blksize=4096 }) = 0 (0x0) lstat("libclamav/others.h",{ mode=-rw------- ,inode=3533647702,size=17106,blksize=4096 }) = 0 (0x0) lstat("libclamav/others_common.c",{ mode=-rw------- ,inode=3533647703,size=21064,blksize=4096 }) = 0 (0x0) lstat("libclamav/packlibs.c",{ mode=-rw------- ,inode=3533647704,size=7863,blksize=4096 }) = 0 (0x0) lstat("libclamav/packlibs.h",{ mode=-rw------- ,inode=3533647705,size=1039,blksize=4096 }) = 0 (0x0) lstat("libclamav/pdf.c",{ mode=-rw------- ,inode=3533647707,size=41297,blksize=4096 }) = 0 (0x0) lstat("libclamav/pdf.h",{ mode=-rw------- ,inode=3533647708,size=870,blksize=4096 }) = 0 (0x0) lstat("libclamav/pe.c",{ mode=-rw------- ,inode=3533647709,size=87025,blksize=4096 }) = 0 (0x0) lstat("libclamav/pe.h",{ mode=-rw------- ,inode=3533647710,size=6239,blksize=4096 }) = 0 (0x0) lstat("libclamav/pe_icons.c",{ mode=-rw------- ,inode=3533647711,size=64573,blksize=4096 }) = 0 (0x0) lstat("libclamav/pe_icons.h",{ mode=-rw------- ,inode=3523231968,size=1374,blksize=4096 }) = 0 (0x0) lstat("libclamav/perflogging.c",{ mode=-rw------- ,inode=3523231969,size=3833,blksize=4096 }) = 0 (0x0) lstat("libclamav/perflogging.h",{ mode=-rw------- ,inode=3523231970,size=2747,blksize=4096 }) = 0 (0x0) lstat("libclamav/petite.c",{ mode=-rw------- ,inode=3523231971,size=14026,blksize=4096 }) = 0 (0x0) lstat("libclamav/petite.h",{ mode=-rw------- ,inode=3523231972,size=1056,blksize=4096 }) = 0 (0x0) lstat("libclamav/phish_domaincheck_db.c",{ mode=-rw------- ,inode=3523231973,size=2237,blksize=4096 }) = 0 (0x0) lstat("libclamav/phish_domaincheck_db.h",{ mode=-rw------- ,inode=3523231974,size=1253,blksize=4096 }) = 0 (0x0) lstat("libclamav/phish_whitelist.c",{ mode=-rw------- ,inode=3523231975,size=2329,blksize=4096 }) = 0 (0x0) lstat("libclamav/phish_whitelist.h",{ mode=-rw------- ,inode=3523231976,size=1197,blksize=4096 }) = 0 (0x0) lstat("libclamav/phishcheck.c",{ mode=-rw------- ,inode=3523231977,size=45951,blksize=4096 }) = 0 (0x0) lstat("libclamav/phishcheck.h",{ mode=-rw------- ,inode=3523231978,size=2301,blksize=4096 }) = 0 (0x0) lstat("libclamav/qsort.c",{ mode=-rw------- ,inode=3523231979,size=5112,blksize=4096 }) = 0 (0x0) lstat("libclamav/readdb.c",{ mode=-rw------- ,inode=3523231980,size=85767,blksize=4096 }) = 0 (0x0) lstat("libclamav/readdb.h",{ mode=-rw------- ,inode=3523231982,size=2401,blksize=4096 }) = 0 (0x0) lstat("libclamav/rebuildpe.c",{ mode=-rw------- ,inode=3523231983,size=6510,blksize=4096 }) = 0 (0x0) lstat("libclamav/rebuildpe.h",{ mode=-rw------- ,inode=3523231984,size=947,blksize=4096 }) = 0 (0x0) lstat("libclamav/regex",{ mode=drwx------ ,inode=1077739768,size=4096,blksize=4096 }) = 0 (0x0) stat("libclamav/regex/",{ mode=drwx------ ,inode=1077739768,size=4096,blksize=4096 }) = 0 (0x0)
open("libclamav/regex/",O_NONBLOCK,020) = 5 (0x5)
fstat(5,{ mode=drwx------ ,inode=1077739768,size=4096,blksize=4096 }) =
0 (0x0)
fcntl(5,F_SETFD,FD_CLOEXEC) = 0 (0x0)
fstatfs(0x5,0x7fffffffcdd0,0x8011e5040,0x2,0x0,0x0) = 0 (0x0) getdirentries(0x5,0x8011e8000,0x1000,0x8011e5128,0xfffffffffffffb90,0x0)
= 512 (0x200)
lstat("libclamav/regex/cclass.h",{ mode=-rw------- ,inode=1077739769,size=2846,blksize=4096 }) = 0 (0x0) lstat("libclamav/regex/cname.h",{ mode=-rw------- ,inode=1077739770,size=4263,blksize=4096 }) = 0 (0x0) lstat("libclamav/regex/engine.c",{ mode=-rw------- ,inode=1077739771,size=26506,blksize=4096 }) = 0 (0x0) lstat("libclamav/regex/regcomp.c",{ mode=-rw------- ,inode=1077739774,size=35560,blksize=4096 }) = 0 (0x0) lstat("libclamav/regex/regerror.c",{ mode=-rw------- ,inode=1077739779,size=4460,blksize=4096 }) = 0 (0x0) lstat("libclamav/regex/regex.h",{ mode=-rw------- ,inode=1077739780,size=3613,blksize=4096 }) = 0 (0x0) lstat("libclamav/regex/regex2.h",{ mode=-rw------- ,inode=1077739781,size=6870,blksize=4096 }) = 0 (0x0) lstat("libclamav/regex/regexec.c",{ mode=-rw------- ,inode=1077739783,size=5756,blksize=4096 }) = 0 (0x0) lstat("libclamav/regex/regfree.c",{ mode=-rw------- ,inode=1077739784,size=2559,blksize=4096 }) = 0 (0x0) lstat("libclamav/regex/strlcpy.c",{ mode=-rw------- ,inode=1077739785,size=1590,blksize=4096 }) = 0 (0x0) lstat("libclamav/regex/utils.h",{ mode=-rw------- ,inode=1077739786,size=2401,blksize=4096 }) = 0 (0x0) getdirentries(0x5,0x8011e8000,0x1000,0x8011e5128,0x17,0x17) = 0 (0x0)
lseek(5,0x0,SEEK_SET) = 0 (0x0)
close(5) = 0 (0x0)
lstat("libclamav/regex_list.c",{ mode=-rw------- ,inode=3523231985,size=20096,blksize=4096 }) = 0 (0x0) lstat("libclamav/regex_list.h",{ mode=-rw------- ,inode=3523231986,size=2258,blksize=4096 }) = 0 (0x0) lstat("libclamav/regex_suffix.c",{ mode=-rw------- ,inode=3523231987,size=10442,blksize=4096 }) = 0 (0x0) lstat("libclamav/regex_suffix.h",{ mode=-rw------- ,inode=3523231988,size=1177,blksize=4096 }) = 0 (0x0) lstat("libclamav/rtf.c",{ mode=-rw------- ,inode=3523231989,size=20004,blksize=4096 }) = 0 (0x0) lstat("libclamav/rtf.h",{ mode=-rw------- ,inode=3523231990,size=854,blksize=4096 }) = 0 (0x0) lstat("libclamav/scanners.c",{ mode=-rw------- ,inode=3523231991,size=63242,blksize=4096 }) = 0 (0x0) lstat("libclamav/scanners.h",{ mode=-rw------- ,inode=3523231992,size=938,blksize=4096 }) = 0 (0x0) lstat("libclamav/sha1.c",{ mode=-rw------- ,inode=3523231995,size=14998,blksize=4096 }) = 0 (0x0) lstat("libclamav/sha1.h",{ mode=-rw------- ,inode=3523231996,size=2209,blksize=4096 }) = 0 (0x0) lstat("libclamav/sha256.c",{ mode=-rw------- ,inode=3523231997,size=12499,blksize=4096 }) = 0 (0x0) lstat("libclamav/sha256.h",{ mode=-rw------- ,inode=3523231998,size=2151,blksize=4096 }) = 0 (0x0) lstat("libclamav/sis.c",{ mode=-rw------- ,inode=3523231999,size=37808,blksize=4096 }) = 0 (0x0) lstat("libclamav/sis.h",{ mode=-rw------- ,inode=3523232000,size=853,blksize=4096 }) = 0 (0x0) lstat("libclamav/special.c",{ mode=-rw------- ,inode=3523232001,size=11374,blksize=4096 }) = 0 (0x0) lstat("libclamav/special.h",{ mode=-rw------- ,inode=3523232002,size=1285,blksize=4096 }) = 0 (0x0) lstat("libclamav/spin.c",{ mode=-rw------- ,inode=3523232003,size=13171,blksize=4096 }) = 0 (0x0) lstat("libclamav/spin.h",{ mode=-rw------- ,inode=3523232004,size=920,blksize=4096 }) = 0 (0x0) lstat("libclamav/str.c",{ mode=-rw------- ,inode=3523232005,size=12521,blksize=4096 }) = 0 (0x0) lstat("libclamav/str.h",{ mode=-rw------- ,inode=3523232006,size=2088,blksize=4096 }) = 0 (0x0) lstat("libclamav/table.c",{ mode=-rw------- ,inode=3523232007,size=4834,blksize=4096 }) = 0 (0x0) lstat("libclamav/table.h",{ mode=-rw------- ,inode=3523232008,size=1429,blksize=4096 }) = 0 (0x0) lstat("libclamav/text.c",{ mode=-rw------- ,inode=3523232009,size=9233,blksize=4096 }) = 0 (0x0) lstat("libclamav/text.h",{ mode=-rw------- ,inode=3523232010,size=1803,blksize=4096 }) = 0 (0x0) lstat("libclamav/textdet.c",{ mode=-rw------- ,inode=3523232011,size=5981,blksize=4096 }) = 0 (0x0) lstat("libclamav/textdet.h",{ mode=-rw------- ,inode=3523232012,size=860,blksize=4096 }) = 0 (0x0) lstat("libclamav/textnorm.c",{ mode=-rw------- ,inode=3523232013,size=4154,blksize=4096 }) = 0 (0x0) lstat("libclamav/textnorm.h",{ mode=-rw------- ,inode=3523232014,size=1143,blksize=4096 }) = 0 (0x0) lstat("libclamav/tnef.c",{ mode=-rw------- ,inode=3523232015,size=9814,blksize=4096 }) = 0 (0x0) lstat("libclamav/tnef.h",{ mode=-rw------- ,inode=3523232016,size=870,blksize=4096 }) = 0 (0x0) lstat("libclamav/type_desc.h",{ mode=-rw------- ,inode=3523232017,size=3041,blksize=4096 }) = 0 (0x0) lstat("libclamav/unarj.c",{ mode=-rw------- ,inode=3523232018,size=26039,blksize=4096 }) = 0 (0x0) lstat("libclamav/unarj.h",{ mode=-rw------- ,inode=3523232019,size=1213,blksize=4096 }) = 0 (0x0) lstat("libclamav/uniq.c",{ mode=-rw------- ,inode=3523232020,size=2800,blksize=4096 }) = 0 (0x0) lstat("libclamav/uniq.h",{ mode=-rw------- ,inode=3523232021,size=1225,blksize=4096 }) = 0 (0x0) lstat("libclamav/unsp.c",{ mode=-rw------- ,inode=3523232022,size=15170,blksize=4096 }) = 0 (0x0) lstat("libclamav/unsp.h",{ mode=-rw------- ,inode=3523232023,size=1687,blksize=4096 }) = 0 (0x0) lstat("libclamav/untar.c",{ mode=-rw------- ,inode=3523232024,size=5811,blksize=4096 }) = 0 (0x0) lstat("libclamav/untar.h",{ mode=-rw------- ,inode=3523232025,size=1340,blksize=4096 }) = 0 (0x0) lstat("libclamav/unzip.c",{ mode=-rw------- ,inode=3523232026,size=15846,blksize=4096 }) = 0 (0x0) lstat("libclamav/unzip.h",{ mode=-rw------- ,inode=3523232027,size=4249,blksize=4096 }) = 0 (0x0) lstat("libclamav/upack.c",{ mode=-rw------- ,inode=3523232028,size=22118,blksize=4096 }) = 0 (0x0) lstat("libclamav/upack.h",{ mode=-rw------- ,inode=3523232029,size=972,blksize=4096 }) = 0 (0x0) lstat("libclamav/upx.c",{ mode=-rw------- ,inode=3523232030,size=16871,blksize=4096 }) = 0 (0x0) lstat("libclamav/upx.h",{ mode=-rw------- ,inode=3523232031,size=1163,blksize=4096 }) = 0 (0x0) lstat("libclamav/uuencode.c",{ mode=-rw------- ,inode=3517287488,size=2945,blksize=4096 }) = 0 (0x0) lstat("libclamav/uuencode.h",{ mode=-rw------- ,inode=3517287489,size=964,blksize=4096 }) = 0 (0x0) lstat("libclamav/vba_extract.c",{ mode=-rw------- ,inode=3517287492,size=28078,blksize=4096 }) = 0 (0x0) lstat("libclamav/vba_extract.h",{ mode=-rw------- ,inode=3517287494,size=1540,blksize=4096 }) = 0 (0x0) lstat("libclamav/version.c",{ mode=-rw------- ,inode=3517287495,size=293,blksize=4096 }) = 0 (0x0) lstat("libclamav/wwunpack.c",{ mode=-rw------- ,inode=3517287496,size=5492,blksize=4096 }) = 0 (0x0) lstat("libclamav/wwunpack.h",{ mode=-rw------- ,inode=3517287497,size=933,blksize=4096 }) = 0 (0x0) lstat("libclamav/yc.c",{ mode=-rw------- ,inode=3517287498,size=6140,blksize=4096 }) = 0 (0x0) lstat("libclamav/yc.h",{ mode=-rw------- ,inode=3517287499,size=956,blksize=4096 }) = 0 (0x0) lstat("libclamav/Makefile",{ mode=-rw-r--r-- ,inode=270743026,size=165975,blksize=4096 }) = 0 (0x0) lstat("libclamav/.deps",{ mode=drwxr-xr-x ,inode=404986341,size=8192,blksize=4096 }) = 0 (0x0) getdirentries(0x4,0x8011e7000,0x1000,0x8011e50c8,0xffff80080111dc64,0x0)
= 0 (0x0)
lseek(4,0x0,SEEK_SET) = 0 (0x0)
close(4) = 0 (0x0)
lstat("libclamav.pc",{ mode=-rw-r--r-- ,inode=270743009,size=236,blksize=4096 }) = 0 (0x0) getdirentries(0x3,0x8011e6000,0x1000,0x8011e5068,0x8011df190,0x0) = 0 (0x0)
lseek(3,0x0,SEEK_SET) = 0 (0x0)
close(3) = 0 (0x0)
lstat("libclamav.pc",{ mode=-rw-r--r-- ,inode=270743009,size=236,blksize=4096 }) = 0 (0x0) lstat("libclamav/.deps/",{ mode=drwxr-xr-x ,inode=404986341,size=8192,blksize=4096 }) = 0 (0x0)
fstat(1,{ mode=crw--w---- ,inode=89,size=0,blksize=4096 }) = 0 (0x0)
ioctl(1,TIOCGETA,0xffffdce0) = 0 (0x0)
write(1,"Removing libclamav/.deps/\n",26) = 26 (0x1a)
stat("libclamav/.deps/.git",0x7fffffffe0a0) ERR#2 'No such file or
directory'
open("libclamav/.deps/.git/HEAD",O_RDONLY,00) ERR#2 'No such file or
directory'
open("libclamav/.deps/.git/packed-refs",O_RDONLY,0666) ERR#2 'No such
file or directory'
stat("libclamav/.deps/",{ mode=drwxr-xr-x ,inode=404986341,size=8192,blksize=4096 }) = 0 (0x0)
open("libclamav/.deps/",O_NONBLOCK,00) = 3 (0x3)
fstat(3,{ mode=drwxr-xr-x ,inode=404986341,size=8192,blksize=4096 }) = 0 (0x0)
fcntl(3,F_SETFD,FD_CLOEXEC) = 0 (0x0)
fstatfs(0x3,0x7fffffffdee0,0x8011e1040,0x0,0x0,0x1e008) = 0 (0x0) getdirentries(0x3,0x8011e2000,0x1000,0x8011e1068,0x0,0x0) = 4096 (0x1000) lstat("libclamav/.deps/bytecode_nojit.Plo",{ mode=-rw-r--r-- ,inode=404986343,size=8,blksize=4096 }) = 0 (0x0)
unlink("libclamav/.deps/bytecode_nojit.Plo") = 0 (0x0)
lstat("libclamav/.deps/libclamav_internal_utils_la-md5.Plo",{ mode=-rw-r--r-- ,inode=404986344,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_internal_utils_la-md5.Plo") = 0 (0x0) lstat("libclamav/.deps/libclamav_internal_utils_la-others_common.Plo",{ mode=-rw-r--r-- ,inode=404986345,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_internal_utils_la-others_common.Plo")
= 0 (0x0)
lstat("libclamav/.deps/libclamav_internal_utils_la-qsort.Plo",{ mode=-rw-r--r-- ,inode=404986346,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_internal_utils_la-qsort.Plo") = 0 (0x0) lstat("libclamav/.deps/libclamav_internal_utils_la-regcomp.Plo",{ mode=-rw-r--r-- ,inode=404986347,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_internal_utils_la-regcomp.Plo") = 0 (0x0) lstat("libclamav/.deps/libclamav_internal_utils_la-regerror.Plo",{ mode=-rw-r--r-- ,inode=404986348,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_internal_utils_la-regerror.Plo") = 0 (0x0) lstat("libclamav/.deps/libclamav_internal_utils_la-regexec.Plo",{ mode=-rw-r--r-- ,inode=404986349,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_internal_utils_la-regexec.Plo") = 0 (0x0) lstat("libclamav/.deps/libclamav_internal_utils_la-regfree.Plo",{ mode=-rw-r--r-- ,inode=404986350,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_internal_utils_la-regfree.Plo") = 0 (0x0) lstat("libclamav/.deps/libclamav_internal_utils_la-str.Plo",{ mode=-rw-r--r-- ,inode=404986352,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_internal_utils_la-str.Plo") = 0 (0x0) lstat("libclamav/.deps/libclamav_internal_utils_la-strlcpy.Plo",{ mode=-rw-r--r-- ,inode=404986353,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_internal_utils_la-strlcpy.Plo") = 0 (0x0) lstat("libclamav/.deps/libclamav_internal_utils_nothreads_la-md5.Plo",{ mode=-rw-r--r-- ,inode=404986354,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_internal_utils_nothreads_la-md5.Plo")
= 0 (0x0) lstat("libclamav/.deps/libclamav_internal_utils_nothreads_la-others_common.Plo",{ mode=-rw-r--r-- ,inode=404986355,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_internal_utils_nothreads_la-others_common.Plo") = 0 (0x0) lstat("libclamav/.deps/libclamav_internal_utils_nothreads_la-qsort.Plo",{ mode=-rw-r--r-- ,inode=404986356,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_internal_utils_nothreads_la-qsort.Plo") = 0 (0x0) lstat("libclamav/.deps/libclamav_internal_utils_nothreads_la-regcomp.Plo",{ mode=-rw-r--r-- ,inode=404986363,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_internal_utils_nothreads_la-regcomp.Plo") = 0 (0x0) lstat("libclamav/.deps/libclamav_internal_utils_nothreads_la-regerror.Plo",{ mode=-rw-r--r-- ,inode=404986366,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_internal_utils_nothreads_la-regerror.Plo") = 0 (0x0) lstat("libclamav/.deps/libclamav_internal_utils_nothreads_la-regexec.Plo",{ mode=-rw-r--r-- ,inode=404986367,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_internal_utils_nothreads_la-regexec.Plo") = 0 (0x0) lstat("libclamav/.deps/libclamav_internal_utils_nothreads_la-regfree.Plo",{ mode=-rw-r--r-- ,inode=404986368,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_internal_utils_nothreads_la-regfree.Plo") = 0 (0x0) lstat("libclamav/.deps/libclamav_internal_utils_nothreads_la-str.Plo",{ mode=-rw-r--r-- ,inode=404986369,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_internal_utils_nothreads_la-str.Plo")
= 0 (0x0) lstat("libclamav/.deps/libclamav_internal_utils_nothreads_la-strlcpy.Plo",{ mode=-rw-r--r-- ,inode=404986370,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_internal_utils_nothreads_la-strlcpy.Plo") = 0 (0x0)
lstat("libclamav/.deps/libclamav_la-7z.Plo",{ mode=-rw-r--r-- ,inode=404986371,size=8,blksize=4096 }) = 0 (0x0)
unlink("libclamav/.deps/libclamav_la-7z.Plo") = 0 (0x0)
lstat("libclamav/.deps/libclamav_la-7zBuf.Plo",{ mode=-rw-r--r-- ,inode=404986372,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_la-7zBuf.Plo") = 0 (0x0) lstat("libclamav/.deps/libclamav_la-7zCrc.Plo",{ mode=-rw-r--r-- ,inode=404986373,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_la-7zCrc.Plo") = 0 (0x0) lstat("libclamav/.deps/libclamav_la-7zDecode.Plo",{ mode=-rw-r--r-- ,inode=404986374,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_la-7zDecode.Plo") = 0 (0x0) lstat("libclamav/.deps/libclamav_la-7zExtract.Plo",{ mode=-rw-r--r-- ,inode=404986375,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_la-7zExtract.Plo") = 0 (0x0) lstat("libclamav/.deps/libclamav_la-7zFile.Plo",{ mode=-rw-r--r-- ,inode=404986376,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_la-7zFile.Plo") = 0 (0x0) lstat("libclamav/.deps/libclamav_la-7zHeader.Plo",{ mode=-rw-r--r-- ,inode=404986377,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_la-7zHeader.Plo") = 0 (0x0) lstat("libclamav/.deps/libclamav_la-7zIn.Plo",{ mode=-rw-r--r-- ,inode=404986378,size=8,blksize=4096 }) = 0 (0x0)
unlink("libclamav/.deps/libclamav_la-7zIn.Plo") = 0 (0x0)
lstat("libclamav/.deps/libclamav_la-7zItem.Plo",{ mode=-rw-r--r-- ,inode=404986379,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_la-7zItem.Plo") = 0 (0x0) lstat("libclamav/.deps/libclamav_la-7zStream.Plo",{ mode=-rw-r--r-- ,inode=404986380,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_la-7zStream.Plo") = 0 (0x0) lstat("libclamav/.deps/libclamav_la-Bcj2.Plo",{ mode=-rw-r--r-- ,inode=404986381,size=8,blksize=4096 }) = 0 (0x0)
unlink("libclamav/.deps/libclamav_la-Bcj2.Plo") = 0 (0x0)
lstat("libclamav/.deps/libclamav_la-Bra.Plo",{ mode=-rw-r--r-- ,inode=404986382,size=8,blksize=4096 }) = 0 (0x0)
unlink("libclamav/.deps/libclamav_la-Bra.Plo") = 0 (0x0)
lstat("libclamav/.deps/libclamav_la-Bra86.Plo",{ mode=-rw-r--r-- ,inode=404986384,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_la-Bra86.Plo") = 0 (0x0) lstat("libclamav/.deps/libclamav_la-LzmaDec.Plo",{ mode=-rw-r--r-- ,inode=404986385,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_la-LzmaDec.Plo") = 0 (0x0) lstat("libclamav/.deps/libclamav_la-aspack.Plo",{ mode=-rw-r--r-- ,inode=404986386,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_la-aspack.Plo") = 0 (0x0) lstat("libclamav/.deps/libclamav_la-autoit.Plo",{ mode=-rw-r--r-- ,inode=404986387,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_la-autoit.Plo") = 0 (0x0) lstat("libclamav/.deps/libclamav_la-bignum.Plo",{ mode=-rw-r--r-- ,inode=404986390,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_la-bignum.Plo") = 0 (0x0) lstat("libclamav/.deps/libclamav_la-binhex.Plo",{ mode=-rw-r--r-- ,inode=404986391,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_la-binhex.Plo") = 0 (0x0) lstat("libclamav/.deps/libclamav_la-blob.Plo",{ mode=-rw-r--r-- ,inode=404986392,size=8,blksize=4096 }) = 0 (0x0)
unlink("libclamav/.deps/libclamav_la-blob.Plo") = 0 (0x0)
lstat("libclamav/.deps/libclamav_la-bytecode.Plo",{ mode=-rw-r--r-- ,inode=404986393,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_la-bytecode.Plo") = 0 (0x0) lstat("libclamav/.deps/libclamav_la-bytecode_api.Plo",{ mode=-rw-r--r-- ,inode=404986394,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_la-bytecode_api.Plo") = 0 (0x0) lstat("libclamav/.deps/libclamav_la-bytecode_api_decl.Plo",{ mode=-rw-r--r-- ,inode=404986395,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_la-bytecode_api_decl.Plo") = 0 (0x0) lstat("libclamav/.deps/libclamav_la-bytecode_vm.Plo",{ mode=-rw-r--r-- ,inode=404986396,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_la-bytecode_vm.Plo") = 0 (0x0) lstat("libclamav/.deps/libclamav_la-bzlib.Plo",{ mode=-rw-r--r-- ,inode=404986397,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_la-bzlib.Plo") = 0 (0x0) lstat("libclamav/.deps/libclamav_la-cab.Plo",{ mode=-rw-r--r-- ,inode=404986398,size=8,blksize=4096 }) = 0 (0x0)
unlink("libclamav/.deps/libclamav_la-cab.Plo") = 0 (0x0)
lstat("libclamav/.deps/libclamav_la-cache.Plo",{ mode=-rw-r--r-- ,inode=404986399,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_la-cache.Plo") = 0 (0x0) lstat("libclamav/.deps/libclamav_la-chmunpack.Plo",{ mode=-rw-r--r-- ,inode=410575698,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_la-chmunpack.Plo") = 0 (0x0) lstat("libclamav/.deps/libclamav_la-cpio.Plo",{ mode=-rw-r--r-- ,inode=410575699,size=8,blksize=4096 }) = 0 (0x0)
unlink("libclamav/.deps/libclamav_la-cpio.Plo") = 0 (0x0)
lstat("libclamav/.deps/libclamav_la-cvd.Plo",{ mode=-rw-r--r-- ,inode=410575700,size=8,blksize=4096 }) = 0 (0x0)
unlink("libclamav/.deps/libclamav_la-cvd.Plo") = 0 (0x0)
lstat("libclamav/.deps/libclamav_la-dconf.Plo",{ mode=-rw-r--r-- ,inode=410575701,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_la-dconf.Plo") = 0 (0x0) lstat("libclamav/.deps/libclamav_la-disasm.Plo",{ mode=-rw-r--r-- ,inode=410575702,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_la-disasm.Plo") = 0 (0x0) lstat("libclamav/.deps/libclamav_la-dlp.Plo",{ mode=-rw-r--r-- ,inode=410575704,size=8,blksize=4096 }) = 0 (0x0)
unlink("libclamav/.deps/libclamav_la-dlp.Plo") = 0 (0x0)
lstat("libclamav/.deps/libclamav_la-dsig.Plo",{ mode=-rw-r--r-- ,inode=410575705,size=8,blksize=4096 }) = 0 (0x0)
unlink("libclamav/.deps/libclamav_la-dsig.Plo") = 0 (0x0)
lstat("libclamav/.deps/libclamav_la-elf.Plo",{ mode=-rw-r--r-- ,inode=410575706,size=8,blksize=4096 }) = 0 (0x0)
unlink("libclamav/.deps/libclamav_la-elf.Plo") = 0 (0x0)
lstat("libclamav/.deps/libclamav_la-entconv.Plo",{ mode=-rw-r--r-- ,inode=410575707,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_la-entconv.Plo") = 0 (0x0) lstat("libclamav/.deps/libclamav_la-explode.Plo",{ mode=-rw-r--r-- ,inode=410575708,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_la-explode.Plo") = 0 (0x0) lstat("libclamav/.deps/libclamav_la-filetypes.Plo",{ mode=-rw-r--r-- ,inode=410575709,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_la-filetypes.Plo") = 0 (0x0) lstat("libclamav/.deps/libclamav_la-filtering.Plo",{ mode=-rw-r--r-- ,inode=410575710,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_la-filtering.Plo") = 0 (0x0) lstat("libclamav/.deps/libclamav_la-fmap.Plo",{ mode=-rw-r--r-- ,inode=410575711,size=8,blksize=4096 }) = 0 (0x0)
unlink("libclamav/.deps/libclamav_la-fmap.Plo") = 0 (0x0)
lstat("libclamav/.deps/libclamav_la-fsg.Plo",{ mode=-rw-r--r-- ,inode=410741760,size=8,blksize=4096 }) = 0 (0x0)
unlink("libclamav/.deps/libclamav_la-fsg.Plo") = 0 (0x0)
lstat("libclamav/.deps/libclamav_la-hashtab.Plo",{ mode=-rw-r--r-- ,inode=410741761,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_la-hashtab.Plo") = 0 (0x0) lstat("libclamav/.deps/libclamav_la-htmlnorm.Plo",{ mode=-rw-r--r-- ,inode=410741763,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_la-htmlnorm.Plo") = 0 (0x0) lstat("libclamav/.deps/libclamav_la-infblock.Plo",{ mode=-rw-r--r-- ,inode=410741764,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_la-infblock.Plo") = 0 (0x0) lstat("libclamav/.deps/libclamav_la-inflate64.Plo",{ mode=-rw-r--r-- ,inode=410741765,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_la-inflate64.Plo") = 0 (0x0) lstat("libclamav/.deps/libclamav_la-is_tar.Plo",{ mode=-rw-r--r-- ,inode=410741766,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_la-is_tar.Plo") = 0 (0x0) lstat("libclamav/.deps/libclamav_la-ishield.Plo",{ mode=-rw-r--r-- ,inode=410741767,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_la-ishield.Plo") = 0 (0x0) lstat("libclamav/.deps/libclamav_la-js-norm.Plo",{ mode=-rw-r--r-- ,inode=410741768,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_la-js-norm.Plo") = 0 (0x0) lstat("libclamav/.deps/libclamav_la-line.Plo",{ mode=-rw-r--r-- ,inode=410741769,size=8,blksize=4096 }) = 0 (0x0)
unlink("libclamav/.deps/libclamav_la-line.Plo") = 0 (0x0)
lstat("libclamav/.deps/libclamav_la-lzma_iface.Plo",{ mode=-rw-r--r-- ,inode=410882114,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_la-lzma_iface.Plo") = 0 (0x0) lstat("libclamav/.deps/libclamav_la-macho.Plo",{ mode=-rw-r--r-- ,inode=430554068,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_la-macho.Plo") = 0 (0x0) lstat("libclamav/.deps/libclamav_la-matcher-ac.Plo",{ mode=-rw-r--r-- ,inode=430554083,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_la-matcher-ac.Plo") = 0 (0x0) lstat("libclamav/.deps/libclamav_la-matcher-bm.Plo",{ mode=-rw-r--r-- ,inode=430554097,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_la-matcher-bm.Plo") = 0 (0x0) lstat("libclamav/.deps/libclamav_la-matcher.Plo",{ mode=-rw-r--r-- ,inode=430554109,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_la-matcher.Plo") = 0 (0x0) lstat("libclamav/.deps/libclamav_la-mbox.Plo",{ mode=-rw-r--r-- ,inode=430554219,size=8,blksize=4096 }) = 0 (0x0)
unlink("libclamav/.deps/libclamav_la-mbox.Plo") = 0 (0x0)
lstat("libclamav/.deps/libclamav_la-message.Plo",{ mode=-rw-r--r-- ,inode=430554234,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_la-message.Plo") = 0 (0x0) lstat("libclamav/.deps/libclamav_la-mew.Plo",{ mode=-rw-r--r-- ,inode=430554264,size=8,blksize=4096 }) = 0 (0x0)
unlink("libclamav/.deps/libclamav_la-mew.Plo") = 0 (0x0)
lstat("libclamav/.deps/libclamav_la-mpool.Plo",{ mode=-rw-r--r-- ,inode=430554949,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_la-mpool.Plo") = 0 (0x0) lstat("libclamav/.deps/libclamav_la-msexpand.Plo",{ mode=-rw-r--r-- ,inode=430554960,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_la-msexpand.Plo") = 0 (0x0) lstat("libclamav/.deps/libclamav_la-mspack.Plo",{ mode=-rw-r--r-- ,inode=430554967,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_la-mspack.Plo") = 0 (0x0) lstat("libclamav/.deps/libclamav_la-nulsft.Plo",{ mode=-rw-r--r-- ,inode=430554978,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_la-nulsft.Plo") = 0 (0x0) lstat("libclamav/.deps/libclamav_la-ole2_extract.Plo",{ mode=-rw-r--r-- ,inode=430554983,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_la-ole2_extract.Plo") = 0 (0x0) lstat("libclamav/.deps/libclamav_la-others.Plo",{ mode=-rw-r--r-- ,inode=430555914,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_la-others.Plo") = 0 (0x0) lstat("libclamav/.deps/libclamav_la-packlibs.Plo",{ mode=-rw-r--r-- ,inode=430555917,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_la-packlibs.Plo") = 0 (0x0) lstat("libclamav/.deps/libclamav_la-pdf.Plo",{ mode=-rw-r--r-- ,inode=430556219,size=8,blksize=4096 }) = 0 (0x0)
unlink("libclamav/.deps/libclamav_la-pdf.Plo") = 0 (0x0)
lstat("libclamav/.deps/libclamav_la-pe.Plo",{ mode=-rw-r--r-- ,inode=430556233,size=8,blksize=4096 }) = 0 (0x0)
unlink("libclamav/.deps/libclamav_la-pe.Plo") = 0 (0x0)
lstat("libclamav/.deps/libclamav_la-pe_icons.Plo",{ mode=-rw-r--r-- ,inode=430556364,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_la-pe_icons.Plo") = 0 (0x0) lstat("libclamav/.deps/libclamav_la-perflogging.Plo",{ mode=-rw-r--r-- ,inode=430557858,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_la-perflogging.Plo") = 0 (0x0) lstat("libclamav/.deps/libclamav_la-petite.Plo",{ mode=-rw-r--r-- ,inode=430557873,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_la-petite.Plo") = 0 (0x0) lstat("libclamav/.deps/libclamav_la-phish_domaincheck_db.Plo",{ mode=-rw-r--r-- ,inode=430557885,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_la-phish_domaincheck_db.Plo") = 0 (0x0) lstat("libclamav/.deps/libclamav_la-phish_whitelist.Plo",{
mode=-rw-r--r-- ,inode=430558515,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_la-phish_whitelist.Plo") = 0 (0x0) lstat("libclamav/.deps/libclamav_la-phishcheck.Plo",{ mode=-rw-r--r-- ,inode=430558533,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_la-phishcheck.Plo") = 0 (0x0) lstat("libclamav/.deps/libclamav_la-readdb.Plo",{ mode=-rw-r--r-- ,inode=430559843,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_la-readdb.Plo") = 0 (0x0) lstat("libclamav/.deps/libclamav_la-rebuildpe.Plo",{ mode=-rw-r--r-- ,inode=430559859,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_la-rebuildpe.Plo") = 0 (0x0) lstat("libclamav/.deps/libclamav_la-regex_list.Plo",{ mode=-rw-r--r-- ,inode=430559880,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_la-regex_list.Plo") = 0 (0x0) lstat("libclamav/.deps/libclamav_la-regex_suffix.Plo",{ mode=-rw-r--r-- ,inode=430559890,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_la-regex_suffix.Plo") = 0 (0x0) lstat("libclamav/.deps/libclamav_la-rtf.Plo",{ mode=-rw-r--r-- ,inode=430559898,size=8,blksize=4096 }) = 0 (0x0)
unlink("libclamav/.deps/libclamav_la-rtf.Plo") = 0 (0x0)
lstat("libclamav/.deps/libclamav_la-scanners.Plo",{ mode=-rw-r--r-- ,inode=430560399,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_la-scanners.Plo") = 0 (0x0) lstat("libclamav/.deps/libclamav_la-sha1.Plo",{ mode=-rw-r--r-- ,inode=430560420,size=8,blksize=4096 }) = 0 (0x0)
unlink("libclamav/.deps/libclamav_la-sha1.Plo") = 0 (0x0)
lstat("libclamav/.deps/libclamav_la-sha256.Plo",{ mode=-rw-r--r-- ,inode=430560868,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_la-sha256.Plo") = 0 (0x0) lstat("libclamav/.deps/libclamav_la-sis.Plo",{ mode=-rw-r--r-- ,inode=430560898,size=8,blksize=4096 }) = 0 (0x0)
unlink("libclamav/.deps/libclamav_la-sis.Plo") = 0 (0x0)
lstat("libclamav/.deps/libclamav_la-special.Plo",{ mode=-rw-r--r-- ,inode=430560912,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_la-special.Plo") = 0 (0x0) lstat("libclamav/.deps/libclamav_la-spin.Plo",{ mode=-rw-r--r-- ,inode=430560926,size=8,blksize=4096 }) = 0 (0x0)
unlink("libclamav/.deps/libclamav_la-spin.Plo") = 0 (0x0)
lstat("libclamav/.deps/libclamav_la-table.Plo",{ mode=-rw-r--r-- ,inode=430561715,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_la-table.Plo") = 0 (0x0) lstat("libclamav/.deps/libclamav_la-text.Plo",{ mode=-rw-r--r-- ,inode=430561755,size=8,blksize=4096 }) = 0 (0x0)
unlink("libclamav/.deps/libclamav_la-text.Plo") = 0 (0x0)
lstat("libclamav/.deps/libclamav_la-textdet.Plo",{ mode=-rw-r--r-- ,inode=430561772,size=8,blksize=4096 }) = 0 (0x0) unlink("libclamav/.deps/libclamav_la-textdet.Plo") = 0 (0x0) getdirentries(0x3,0x8011e2000,0x1000,0x8011e1068,0xac,0x1b008) = 0 (0x0)
lseek(3,0x0,SEEK_SET) = 0 (0x0)
close(3) = 0 (0x0)
rmdir(0x8011e3080,0x5ff560,0x10,0x2000,0x626298,0x0) ERR#66 'Directory
not empty'
warning: failed to remove 'libclamav/.deps/'
write(2,"warning: failed to remove 'libcl"...,45) = 45 (0x2d)

Full output of 'truss rm -rf libclamav/.deps':
__sysctl(0x7fffffffe3f0,0x2,0x7fffffffe40c,0x7fffffffe400,0x0,0x0) = 0 (0x0)
mmap(0x0,656,PROT_READ|PROT_WRITE,MAP_ANON,-1,0x0) = 34365190144
(0x800533000)
munmap(0x800533000,656) = 0 (0x0)
__sysctl(0x7fffffffe460,0x2,0x80063d328,0x7fffffffe458,0x0,0x0) = 0 (0x0)
mmap(0x0,32768,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON,-1,0x0) =
34365190144 (0x800533000)
issetugid(0x800534015,0x80052e686,0x800649b30,0x800649b00,0x598f,0x0) =
0 (0x0)
open("/etc/libmap.conf",O_RDONLY,0666) ERR#2 'No such file or directory'
open("/var/run/ld-elf.so.hints",O_RDONLY,057) = 3 (0x3)
read(3,"Ehnt\^A\0\0\0\M^@\0\0\0-\0\0\0\0"...,128) = 128 (0x80)
lseek(3,0x80,SEEK_SET) = 128 (0x80)
read(3,"/lib:/usr/lib:/usr/lib/compat:/u"...,45) = 45 (0x2d)
close(3) = 0 (0x0)
access("/lib/libc.so.7",0) = 0 (0x0)
open("/lib/libc.so.7",O_RDONLY,030751000) = 3 (0x3)
fstat(3,{ mode=-r--r--r-- ,inode=38225,size=1265520,blksize=4096 }) = 0
(0x0)
read(3,"\^?ELF\^B\^A\^A\t\0\0\0\0\0\0\0"...,4096) = 4096 (0x1000)
mmap(0x0,2334720,PROT_NONE,MAP_PRIVATE|MAP_ANON|MAP_NOCORE,-1,0x0) =
34366332928 (0x80064a000)
mmap(0x80064a000,1052672,PROT_READ|PROT_EXEC,MAP_PRIVATE|MAP_FIXED|MAP_NOCORE,3,0x0)
= 34366332928 (0x80064a000)
mmap(0x80084b000,122880,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED,3,0x101000)
= 34368434176 (0x80084b000)
mprotect(0x800869000,110592,PROT_READ|PROT_WRITE) = 0 (0x0)
close(3) = 0 (0x0)
sysarch(0x81,0x7fffffffe4e0,0x8005360c8,0x0,0xffffffffffce6310,0x800665d70)
= 0 (0x0)
mmap(0x0,896,PROT_READ|PROT_WRITE,MAP_ANON,-1,0x0) = 34365222912
(0x80053b000)
munmap(0x80053b000,896) = 0 (0x0)
mmap(0x0,43584,PROT_READ|PROT_WRITE,MAP_ANON,-1,0x0) = 34365222912
(0x80053b000)
munmap(0x80053b000,43584) = 0 (0x0)
sigprocmask(SIG_BLOCK,SIGHUP|SIGINT|SIGQUIT|SIGKILL|SIGPIPE|SIGALRM|SIGTERM|SIGURG|SIGSTOP|SIGTSTP|SIGCONT|SIGCHLD|SIGTTIN|SIGTTOU|SIGIO|SIGXCPU|SIGXFSZ|SIGVTALRM|SIGPROF|SIGWINCH|SIGINFO|SIGUSR1|SIGUSR2,0x0) = 0 (0x0)
sigprocmask(SIG_SETMASK,0x0,0x0) = 0 (0x0)
__sysctl(0x7fffffffe480,0x2,0x503580,0x7fffffffe478,0x0,0x0) = 0 (0x0) sigprocmask(SIG_BLOCK,SIGHUP|SIGINT|SIGQUIT|SIGKILL|SIGPIPE|SIGALRM|SIGTERM|SIGURG|SIGSTOP|SIGTSTP|SIGCONT|SIGCHLD|SIGTTIN|SIGTTOU|SIGIO|SIGXCPU|SIGXFSZ|SIGVTALRM|SIGPROF|SIGWINCH|SIGINFO|SIGUSR1|SIGUSR2,0x0) = 0 (0x0)
sigprocmask(SIG_SETMASK,0x0,0x0) = 0 (0x0)
geteuid(0x7fffffffec20,0x402755,0xf,0x5f,0x0,0x0) = 1066 (0x42a)
sigaction(SIGINFO,{ 0x401410 SA_RESTART ss_t },{ SIG_DFL 0x0 ss_t }) = 0
(0x0)
ioctl(0,TIOCGETA,0xffffeb60) = 0 (0x0)
__sysctl(0x7fffffffe660,0x2,0x80086e788,0x7fffffffe658,0x0,0x0) = 0 (0x0)
readlink("/etc/malloc.conf",0x7fffffffe680,1024) ERR#2 'No such file or
directory'
issetugid(0x800742031,0x7fffffffe680,0xffffffffffffffff,0x0,0x0,0x0) = 0
(0x0)
break(0x600000) = 0 (0x0)
__sysctl(0x7fffffffe940,0x2,0x7fffffffe95c,0x7fffffffe950,0x0,0x0) = 0 (0x0)
mmap(0x0,1048576,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON,-1,0x0) =
34368667648 (0x800884000)
mmap(0x800984000,507904,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON,-1,0x0) =
34369716224 (0x800984000)
munmap(0x800884000,507904) = 0 (0x0)
lstat("libclamav/.deps",{ mode=drwxr-xr-x
,inode=58548,size=8192,blksize=4096 }) = 0 (0x0)
open(".",O_RDONLY,00) = 3 (0x3)
fchdir(0x3,0x5035c0,0x0,0x2,0x1cecf8,0x0) = 0 (0x0)
stat("libclamav/.deps",{ mode=drwxr-xr-x
,inode=58548,size=8192,blksize=4096 }) = 0 (0x0)
open("libclamav/.deps",O_NONBLOCK,044270600) = 4 (0x4)
fstat(4,{ mode=drwxr-xr-x ,inode=58548,size=8192,blksize=4096 }) = 0 (0x0)
fcntl(4,F_SETFD,FD_CLOEXEC) = 0 (0x0)
__sysctl(0x7fffffffe720,0x2,0x800880898,0x7fffffffe718,0x0,0x0) = 0 (0x0)
fstatfs(0x4,0x7fffffffe810,0x800880898,0x7fffffffe718,0x0,0x0) = 0 (0x0)
statfs(0x80090b200,0x800902358,0x800917180,0x0,0x0,0x8009002c0) = 0 (0x0)
fstat(4,{ mode=drwxr-xr-x ,inode=58548,size=8192,blksize=4096 }) = 0 (0x0)
fchdir(0x4,0x7fffffffea20,0x4,0x0,0x0,0x8009002c0) = 0 (0x0)
getdirentries(0x4,0x80091b000,0x1000,0x80091a068,0x0,0x8009002c0) = 4096
(0x1000)
getdirentries(0x4,0x80091b000,0x1000,0x80091a068,0x6c6c,0x1) = 1024 (0x400)
getdirentries(0x4,0x80091b000,0x1000,0x80091a068,0x8afc,0x1) = 0 (0x0)
lseek(4,0x0,SEEK_SET) = 0 (0x0)
close(4) = 0 (0x0)
unlink("bytecode_nojit.Plo") = 0 (0x0)
unlink("libclamav_internal_utils_la-md5.Plo") = 0 (0x0)
unlink("libclamav_internal_utils_la-others_common.Plo") = 0 (0x0)
unlink("libclamav_internal_utils_la-qsort.Plo") = 0 (0x0)
unlink("libclamav_internal_utils_la-regcomp.Plo") = 0 (0x0)
unlink("libclamav_internal_utils_la-regerror.Plo") = 0 (0x0)
unlink("libclamav_internal_utils_la-regexec.Plo") = 0 (0x0)
unlink("libclamav_internal_utils_la-regfree.Plo") = 0 (0x0)
unlink("libclamav_internal_utils_la-str.Plo") = 0 (0x0)
unlink("libclamav_internal_utils_la-strlcpy.Plo") = 0 (0x0)
unlink("libclamav_internal_utils_nothreads_la-md5.Plo") = 0 (0x0)
unlink("libclamav_internal_utils_nothreads_la-others_common.Plo") = 0 (0x0)
unlink("libclamav_internal_utils_nothreads_la-qsort.Plo") = 0 (0x0)
unlink("libclamav_internal_utils_nothreads_la-regcomp.Plo") = 0 (0x0)
unlink("libclamav_internal_utils_nothreads_la-regerror.Plo") = 0 (0x0)
unlink("libclamav_internal_utils_nothreads_la-regexec.Plo") = 0 (0x0)
unlink("libclamav_internal_utils_nothreads_la-regfree.Plo") = 0 (0x0)
unlink("libclamav_internal_utils_nothreads_la-str.Plo") = 0 (0x0)
unlink("libclamav_internal_utils_nothreads_la-strlcpy.Plo") = 0 (0x0)
unlink("libclamav_la-7z.Plo") = 0 (0x0)
unlink("libclamav_la-7zBuf.Plo") = 0 (0x0)
unlink("libclamav_la-7zCrc.Plo") = 0 (0x0)
unlink("libclamav_la-7zDecode.Plo") = 0 (0x0)
unlink("libclamav_la-7zExtract.Plo") = 0 (0x0)
unlink("libclamav_la-7zFile.Plo") = 0 (0x0)
unlink("libclamav_la-7zHeader.Plo") = 0 (0x0)
unlink("libclamav_la-7zIn.Plo") = 0 (0x0)
unlink("libclamav_la-7zItem.Plo") = 0 (0x0)
unlink("libclamav_la-7zStream.Plo") = 0 (0x0)
unlink("libclamav_la-Bcj2.Plo") = 0 (0x0)
unlink("libclamav_la-Bra.Plo") = 0 (0x0)
unlink("libclamav_la-Bra86.Plo") = 0 (0x0)
unlink("libclamav_la-LzmaDec.Plo") = 0 (0x0)
unlink("libclamav_la-aspack.Plo") = 0 (0x0)
unlink("libclamav_la-autoit.Plo") = 0 (0x0)
unlink("libclamav_la-bignum.Plo") = 0 (0x0)
unlink("libclamav_la-binhex.Plo") = 0 (0x0)
unlink("libclamav_la-blob.Plo") = 0 (0x0)
unlink("libclamav_la-bytecode.Plo") = 0 (0x0)
unlink("libclamav_la-bytecode_api.Plo") = 0 (0x0)
unlink("libclamav_la-bytecode_api_decl.Plo") = 0 (0x0)
unlink("libclamav_la-bytecode_vm.Plo") = 0 (0x0)
unlink("libclamav_la-bzlib.Plo") = 0 (0x0)
unlink("libclamav_la-cab.Plo") = 0 (0x0)
unlink("libclamav_la-cache.Plo") = 0 (0x0)
unlink("libclamav_la-chmunpack.Plo") = 0 (0x0)
unlink("libclamav_la-cpio.Plo") = 0 (0x0)
unlink("libclamav_la-cvd.Plo") = 0 (0x0)
unlink("libclamav_la-dconf.Plo") = 0 (0x0)
unlink("libclamav_la-disasm.Plo") = 0 (0x0)
unlink("libclamav_la-dlp.Plo") = 0 (0x0)
unlink("libclamav_la-dsig.Plo") = 0 (0x0)
unlink("libclamav_la-elf.Plo") = 0 (0x0)
unlink("libclamav_la-entconv.Plo") = 0 (0x0)
unlink("libclamav_la-explode.Plo") = 0 (0x0)
unlink("libclamav_la-filetypes.Plo") = 0 (0x0)
unlink("libclamav_la-filtering.Plo") = 0 (0x0)
unlink("libclamav_la-fmap.Plo") = 0 (0x0)
unlink("libclamav_la-fsg.Plo") = 0 (0x0)
unlink("libclamav_la-hashtab.Plo") = 0 (0x0)
unlink("libclamav_la-htmlnorm.Plo") = 0 (0x0)
unlink("libclamav_la-infblock.Plo") = 0 (0x0)
unlink("libclamav_la-inflate64.Plo") = 0 (0x0)
unlink("libclamav_la-is_tar.Plo") = 0 (0x0)
unlink("libclamav_la-ishield.Plo") = 0 (0x0)
unlink("libclamav_la-js-norm.Plo") = 0 (0x0)
unlink("libclamav_la-line.Plo") = 0 (0x0)
unlink("libclamav_la-lzma_iface.Plo") = 0 (0x0)
unlink("libclamav_la-macho.Plo") = 0 (0x0)
unlink("libclamav_la-matcher-ac.Plo") = 0 (0x0)
unlink("libclamav_la-matcher-bm.Plo") = 0 (0x0)
unlink("libclamav_la-matcher.Plo") = 0 (0x0)
unlink("libclamav_la-mbox.Plo") = 0 (0x0)
unlink("libclamav_la-message.Plo") = 0 (0x0)
unlink("libclamav_la-mew.Plo") = 0 (0x0)
unlink("libclamav_la-mpool.Plo") = 0 (0x0)
unlink("libclamav_la-msexpand.Plo") = 0 (0x0)
unlink("libclamav_la-mspack.Plo") = 0 (0x0)
unlink("libclamav_la-nulsft.Plo") = 0 (0x0)
unlink("libclamav_la-ole2_extract.Plo") = 0 (0x0)
unlink("libclamav_la-others.Plo") = 0 (0x0)
unlink("libclamav_la-packlibs.Plo") = 0 (0x0)
unlink("libclamav_la-pdf.Plo") = 0 (0x0)
unlink("libclamav_la-pe.Plo") = 0 (0x0)
unlink("libclamav_la-pe_icons.Plo") = 0 (0x0)
unlink("libclamav_la-perflogging.Plo") = 0 (0x0)
unlink("libclamav_la-petite.Plo") = 0 (0x0)
unlink("libclamav_la-phish_domaincheck_db.Plo") = 0 (0x0)
unlink("libclamav_la-phish_whitelist.Plo") = 0 (0x0)
unlink("libclamav_la-phishcheck.Plo") = 0 (0x0)
unlink("libclamav_la-readdb.Plo") = 0 (0x0)
unlink("libclamav_la-rebuildpe.Plo") = 0 (0x0)
unlink("libclamav_la-regex_list.Plo") = 0 (0x0)
unlink("libclamav_la-regex_suffix.Plo") = 0 (0x0)
unlink("libclamav_la-rtf.Plo") = 0 (0x0)
unlink("libclamav_la-scanners.Plo") = 0 (0x0)
unlink("libclamav_la-sha1.Plo") = 0 (0x0)
unlink("libclamav_la-sha256.Plo") = 0 (0x0)
unlink("libclamav_la-sis.Plo") = 0 (0x0)
unlink("libclamav_la-special.Plo") = 0 (0x0)
unlink("libclamav_la-spin.Plo") = 0 (0x0)
unlink("libclamav_la-table.Plo") = 0 (0x0)
unlink("libclamav_la-text.Plo") = 0 (0x0)
unlink("libclamav_la-textdet.Plo") = 0 (0x0)
unlink("libclamav_la-textnorm.Plo") = 0 (0x0)
unlink("libclamav_la-tnef.Plo") = 0 (0x0)
unlink("libclamav_la-unarj.Plo") = 0 (0x0)
unlink("libclamav_la-uniq.Plo") = 0 (0x0)
unlink("libclamav_la-unsp.Plo") = 0 (0x0)
unlink("libclamav_la-untar.Plo") = 0 (0x0)
unlink("libclamav_la-unzip.Plo") = 0 (0x0)
unlink("libclamav_la-upack.Plo") = 0 (0x0)
unlink("libclamav_la-upx.Plo") = 0 (0x0)
unlink("libclamav_la-uuencode.Plo") = 0 (0x0)
unlink("libclamav_la-vba_extract.Plo") = 0 (0x0)
unlink("libclamav_la-version.Plo") = 0 (0x0)
unlink("libclamav_la-wwunpack.Plo") = 0 (0x0)
unlink("libclamav_la-yc.Plo") = 0 (0x0)
unlink("unrar.Plo") = 0 (0x0)
unlink("unrar15.Plo") = 0 (0x0)
unlink("unrar20.Plo") = 0 (0x0)
unlink("unrar_iface.Plo") = 0 (0x0)
unlink("unrarcmd.Plo") = 0 (0x0)
unlink("unrarfilter.Plo") = 0 (0x0)
unlink("unrarhlp.Plo") = 0 (0x0)
unlink("unrarppm.Plo") = 0 (0x0)
unlink("unrarvm.Plo") = 0 (0x0)
fchdir(0x3,0x5035c0,0x80090b200,0x5036c0,0x5036c0,0x0) = 0 (0x0)
rmdir(0x80090b200,0x5035c0,0x80090b200,0x5036c0,0x5036c0,0x0) = 0 (0x0)
fchdir(0x3,0x5035c0,0x5036c0,0x5036c0,0x5036c0,0x0) = 0 (0x0)
close(3) = 0 (0x0)
sigprocmask(SIG_BLOCK,SIGHUP|SIGINT|SIGQUIT|SIGKILL|SIGPIPE|SIGALRM|SIGTERM|SIGURG|SIGSTOP|SIGTSTP|SIGCONT|SIGCHLD|SIGTTIN|SIGTTOU|SIGIO|SIGXCPU|SIGXFSZ|SIGVTALRM|SIGPROF|SIGWINCH|SIGINFO|SIGUSR1|SIGUSR2,0x0) = 0 (0x0)
sigprocmask(SIG_SETMASK,0x0,0x0) = 0 (0x0)
sigprocmask(SIG_BLOCK,SIGHUP|SIGINT|SIGQUIT|SIGKILL|SIGPIPE|SIGALRM|SIGTERM|SIGURG|SIGSTOP|SIGTSTP|SIGCONT|SIGCHLD|SIGTTIN|SIGTTOU|SIGIO|SIGXCPU|SIGXFSZ|SIGVTALRM|SIGPROF|SIGWINCH|SIGINFO|SIGUSR1|SIGUSR2,0x0) = 0 (0x0)
sigprocmask(SIG_SETMASK,0x0,0x0) = 0 (0x0)
process exit, rval = 0

Best regards,
--Edwin

#1 lore raw
Quoted 11 lines · Török Edwin <edwintorok <at> gmail.com> writes:

Hi,

I am running git 1.7.1 on a FreeBSD 8 box which has its home dir mounted via NFS (I guess the NFS server is a Linux box).
When running 'git clean -x -f -d' it fails to remove some directories:
warning: failed to remove 'libclamav/.deps/'
warning: failed to remove 'libclamav/.libs/'
warning: failed to remove 'libclamav/c++/.deps/'
warning: failed to remove 'libclamav/c++/.libs/'
warning: failed to remove 'libclamav/c++/llvm/test/CodeGen/X86/Output/'

Quoted 1 line

This causes buildbot managed builds to fail every 2nd time.

Sounds like the classic nfs problem with references to open deleted files. If you look closer at the failing directories, I bet that you'll find files with names like ".nfsDEAD".

You can use eg lsof to find the process that holds the open file reference:

  $ lsof tmp/.nfs536B 
  COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF     NODE NAME
  pike    29705 grubba    8w  VREG  285,4        0 10977399 tmp/.nfs536B

/grubba

#2 lore raw
Quoted 4 lines · Henrik Grubbström <grubba <at> grubba.org> writes:

Sounds like the classic nfs problem with references to open deleted files. If you look closer at the failing directories, I bet that you'll find files with names like ".nfsDEAD".

No, these are all the files that remain in libclamav/.deps (ls -al):

edwin@gcc101:~/buildbot/gcc4.2/build$ ls -al libclamav/.deps/
total 116
drwxr-xr-x  2 edwin  edwin  8192 Jun 18 03:24 .
drwx------  8 edwin  edwin  8192 Jun 18 03:24 ..
-rw-r--r--  1 edwin  edwin     8 Jun 18 03:23 libclamav_la-textnorm.Plo
-rw-r--r--  1 edwin  edwin     8 Jun 18 03:23 libclamav_la-tnef.Plo
-rw-r--r--  1 edwin  edwin     8 Jun 18 03:23 libclamav_la-unarj.Plo
-rw-r--r--  1 edwin  edwin     8 Jun 18 03:23 libclamav_la-uniq.Plo
-rw-r--r--  1 edwin  edwin     8 Jun 18 03:23 libclamav_la-unsp.Plo
-rw-r--r--  1 edwin  edwin     8 Jun 18 03:23 libclamav_la-untar.Plo
-rw-r--r--  1 edwin  edwin     8 Jun 18 03:23 libclamav_la-unzip.Plo
-rw-r--r--  1 edwin  edwin     8 Jun 18 03:23 libclamav_la-upack.Plo
-rw-r--r--  1 edwin  edwin     8 Jun 18 03:23 libclamav_la-upx.Plo
-rw-r--r--  1 edwin  edwin     8 Jun 18 03:23 libclamav_la-uuencode.Plo
-rw-r--r--  1 edwin  edwin     8 Jun 18 03:23 libclamav_la-vba_extract.Plo
-rw-r--r--  1 edwin  edwin     8 Jun 18 03:23 libclamav_la-version.Plo
-rw-r--r--  1 edwin  edwin     8 Jun 18 03:23 libclamav_la-wwunpack.Plo
-rw-r--r--  1 edwin  edwin     8 Jun 18 03:23 libclamav_la-yc.Plo
-rw-r--r--  1 edwin  edwin     8 Jun 18 03:23 unrar.Plo
-rw-r--r--  1 edwin  edwin     8 Jun 18 03:23 unrar15.Plo
-rw-r--r--  1 edwin  edwin     8 Jun 18 03:23 unrar20.Plo
-rw-r--r--  1 edwin  edwin     8 Jun 18 03:23 unrar_iface.Plo
-rw-r--r--  1 edwin  edwin     8 Jun 18 03:23 unrarcmd.Plo
-rw-r--r--  1 edwin  edwin     8 Jun 18 03:23 unrarfilter.Plo
-rw-r--r--  1 edwin  edwin     8 Jun 18 03:23 unrarhlp.Plo
-rw-r--r--  1 edwin  edwin     8 Jun 18 03:23 unrarppm.Plo
-rw-r--r--  1 edwin  edwin     8 Jun 18 03:23 unrarvm.Plo

If I run 'git clean -x -f -d -- libclamav' a few more times they are eventually removed.

It is interesting that every time I repeat the config.status/git clean steps I get the *same* files remaining in the directory.

There were 127 files initially, these 23 always remain behind on 1st run, a 2nd git clean removes them (but some other .deps directories need even more reruns of git clean).

I added a printf in remove_dir_recursively, and those files are not even printed.

Now I see the bug!
You do a single readdir() pass, and unlink() files. That is wrong for 2 reasons:
- new files may be added in the meantime and you have a race condition
- unlinking a file can cause order of files to be rearranged, moved. But your
readdir() cursors stays where it was before, hence you will miss enumerating some files that are there.

The fix is to rewinddir() if you unlinked anything (won't fix the race condition but that can't be eliminated completely anyway).

I'm sending a patch as reply to this mail.

#3 lore raw

PATCH 1/1 Fix 'git clean' failure on NFS.

readdir() used to do a single pass, which is not always enough. If you unlink some files/rmdir some subdirs then there might be some files you haven't seen yet *before* the readdir cursor (files get rearranged in the directory, etc.).

The fix is to do an additional readdir() pass if we unlinked/rmdired something. This is easily accomplished by using rewinddir.

---
 dir.c |   16 ++++++++++++++--
 1 files changed, 14 insertions(+), 2 deletions(-)
dir.c +14 -2
index 5615f33..7260907 100644
@@ -999,6 +999,7 @@ int remove_dir_recursively(struct strbuf *path, int flag)
 	struct dirent *e;
 	int ret = 0, original_len = path->len, len;
 	int only_empty = (flag & REMOVE_DIR_EMPTY_ONLY);
+	int did_rm;
 	unsigned char submodule_head[20];
 
 	if ((flag & REMOVE_DIR_KEEP_NESTED_GIT) &&
@@ -1013,6 +1014,8 @@ int remove_dir_recursively(struct strbuf *path, int flag)
 		strbuf_addch(path, '/');
 
 	len = path->len;
+	do {
+	did_rm = 0;
 	while ((e = readdir(dir)) != NULL) {
 		struct stat st;
 		if (is_dot_or_dotdot(e->d_name))
@@ -1023,15 +1026,24 @@ int remove_dir_recursively(struct strbuf *path, int flag)
 		if (lstat(path->buf, &st))
 			; /* fall thru */
 		else if (S_ISDIR(st.st_mode)) {
-			if (!remove_dir_recursively(path, only_empty))
+			if (!remove_dir_recursively(path, only_empty)) {
+				did_rm = 1;
 				continue; /* happy */
-		} else if (!only_empty && !unlink(path->buf))
+			}
+		} else if (!only_empty && !unlink(path->buf)) {
+			did_rm = 1;
 			continue; /* happy, too */
+		}
 
 		/* path too long, stat fails, or non-directory still exists */
 		ret = -1;
 		break;
 	}
+	/* if we unlinked/rmdir-ed anything there might be files we haven't seen
+	 * yet before the readdir() cursor, rewind and walk directory again
+	 * until we can't unlink any more. */
+	rewinddir(dir);
+	} while (did_rm && !ret);
 	closedir(dir);
 
 	strbuf_setlen(path, original_len);
Signature · 1 line
1.7.0
#4 lore raw

Re: [PATCH] Fix 'git clean' failure on NFS.

Am 6/18/2010 13:07, schrieb Török Edwin:

dir.c int remove_dir_recursively(struct strbuf *path, int flag) · line 1031

Quoted 5 lines
dir.c +2 -1
 		else if (S_ISDIR(st.st_mode)) {
-			if (!remove_dir_recursively(path, only_empty))
+			if (!remove_dir_recursively(path, only_empty)) {
+				did_rm = 1;
 				continue; /* happy */

Is it possible that remove_dir_recursively exits with 0, but it actually did not remove the directory? That would result in an endless loop: it would have to re-enter remove_dir_recursively on the next iteration, return 0 again (without removing the directory), next iteration, etc.

-- Hannes

#5 lore raw

Re: [PATCH] Fix 'git clean' failure on NFS.

Quoted 11 lines · Johannes Sixt

Am 6/18/2010 13:07, schrieb Török Edwin:

dir.c int remove_dir_recursively(struct strbuf *path, int flag) · line 1031

Quoted 5 lines
dir.c +2 -1
 		else if (S_ISDIR(st.st_mode)) {
-			if (!remove_dir_recursively(path, only_empty))
+			if (!remove_dir_recursively(path, only_empty)) {
+				did_rm = 1;
 				continue; /* happy */

Is it possible that remove_dir_recursively exits with 0, but it actually did not remove the directory? That would result in an endless loop: it would have to re-enter remove_dir_recursively on the next iteration, return 0 again (without removing the directory), next iteration, etc.

Hmm, I think this could cause problems:

	if ((flag & REMOVE_DIR_KEEP_NESTED_GIT) &&
	    !resolve_gitlink_ref(path->buf, "HEAD", submodule_head))
		/* Do not descend and nuke a nested git work tree. */
		return 0;

What if we limit the amount of times you can loop?
The worst case is that you loop == number of files in the directory, if you loop more times than we could break out early.

Or we can compare the number of files listed in one pass, and in another. If they stay equal, we can break out (since we'd infloop), if it is higher (new files added) or lower (successfully removed some) we can keep looping.

How does that sound?

--Edwin

#6 lore raw

Re: [PATCH] Fix 'git clean' failure on NFS.

In reply to Török Edwin

2010/6/18 Török Edwin <[email protected]>:

Quoted 8 lines

readdir() used to do a single pass, which is not always enough. If you unlink some files/rmdir some subdirs then there might be some files you haven't seen yet *before* the readdir cursor (files get rearranged in the directory, etc.).

The fix is to do an additional readdir() pass if we unlinked/rmdired something. This is easily accomplished by using rewinddir.

Won't this break on Windows? mingw_readdir() doesn't seem to have a maching mingw_rewinddir() in compat/mingw.c/h....

Signature · 1 line
Erik "kusma" Faye-Lund
#7 lore raw

Re: [PATCH] Fix 'git clean' failure on NFS.

Quoted 6 lines · Erik Faye-Lund

2010/6/18 Török Edwin <[email protected]>:

Quoted 5 lines

readdir() used to do a single pass, which is not always enough. If you unlink some files/rmdir some subdirs then there might be some files you haven't seen yet *before* the readdir cursor (files get rearranged in the directory, etc.).

Quoted 7 lines
Quoted 3 lines

The fix is to do an additional readdir() pass if we unlinked/rmdired something. This is easily accomplished by using rewinddir.

Won't this break on Windows? mingw_readdir() doesn't seem to have a maching mingw_rewinddir() in compat/mingw.c/h....

rewinddir() is used in ClamAV too, and it builds natively on win32. I think we have some compat function that map rewinddir to the Win32 API, somebody will probably have to do that for git too.

Another possibility is to do closedir/opendir again on mingw.

Best regards,
--Edwin

#8 lore raw

Re: [PATCH] Fix 'git clean' failure on NFS.

2010/6/18 Török Edwin <[email protected]>:

Quoted 11 lines · Erik Faye-Lund
Quoted 10 lines

2010/6/18 Török Edwin <[email protected]>:

Quoted 8 lines

readdir() used to do a single pass, which is not always enough. If you unlink some files/rmdir some subdirs then there might be some files you haven't seen yet *before* the readdir cursor (files get rearranged in the directory, etc.).

The fix is to do an additional readdir() pass if we unlinked/rmdired something. This is easily accomplished by using rewinddir.

Quoted 8 lines
Quoted 3 lines

Won't this break on Windows? mingw_readdir() doesn't seem to have a maching mingw_rewinddir() in compat/mingw.c/h....

rewinddir() is used in ClamAV too, and it builds natively on win32. I think we have some compat function that map rewinddir to the Win32 API, somebody will probably have to do that for git too.

There's a rewinddir function in msvcrt.dll. However, we're not using msvcrt.dll's opendir() implementation for performance reasons, so this patch would require a rewinddir implementation as a preparation path, no? If such a patch could be extracted from ClamAV (and ClamAV is license compatible with git), would you mind including such a patch for the next round?

Quoted 1 line

Another possibility is to do closedir/opendir again on mingw.

Yes. Yet another possibility is to enable the NO_MINGW_REPLACE_READDIR-switch, but this has negative performance effects...

Signature · 1 line
Erik "kusma" Faye-Lund
#9 lore raw

Re: [PATCH] Fix 'git clean' failure on NFS.

Quoted 21 lines · Erik Faye-Lund

2010/6/18 Török Edwin <[email protected]>:

Quoted 11 lines · Erik Faye-Lund
Quoted 10 lines

2010/6/18 Török Edwin <[email protected]>:

Quoted 8 lines

readdir() used to do a single pass, which is not always enough. If you unlink some files/rmdir some subdirs then there might be some files you haven't seen yet *before* the readdir cursor (files get rearranged in the directory, etc.).

The fix is to do an additional readdir() pass if we unlinked/rmdired something. This is easily accomplished by using rewinddir.

Quoted 8 lines
Quoted 3 lines

Won't this break on Windows? mingw_readdir() doesn't seem to have a maching mingw_rewinddir() in compat/mingw.c/h....

rewinddir() is used in ClamAV too, and it builds natively on win32. I think we have some compat function that map rewinddir to the Win32 API, somebody will probably have to do that for git too.

Quoted 5 lines

There's a rewinddir function in msvcrt.dll. However, we're not using msvcrt.dll's opendir() implementation for performance reasons, so this patch would require a rewinddir implementation as a preparation path, no? If such a patch could be extracted from ClamAV (and ClamAV is license compatible with git

ClamAV is GPLv2 only. git is the same AFAICT, so it should be fine.

Quoted 2 lines

), would you mind including such a patch
for the next round?

Will try to do that later today.

Quoted 7 lines
Quoted 2 lines

Another possibility is to do closedir/opendir again on mingw.

Yes. Yet another possibility is to enable the NO_MINGW_REPLACE_READDIR-switch, but this has negative performance effects...

I'd rather not do that.

Best regards,
--Edwin