Hi, stepped into an infinite loop on freshclam when there's no permissions for daily.inc and daily.inc/*.
I know the permissions are an install problem but it may happen and the loop is a major CPU chewer: root 232 0.0 0.0 1928 652 ? S 2006 0:46 /usr/sbin/cron root 4915 0.0 0.0 2040 724 ? S 13:44 0:00 \_ /USR/SBIN/CRON qscand 4916 73.9 0.0 2892 848 ? R 13:44 421:12 \_ /ptmail/av/bin/freshclam root 4918 0.0 0.0 1524 300 ? S 13:44 0:00 \_ bin/qmail-inject -a -- root qmailq 4922 0.0 0.0 1488 288 ? S 13:44 0:00 \_ bin/qmail-queue Attached is a patch for shared/misc.c that fixes this (haven't tested it though) and a strace dump of the looping process. Best regards. -- Jose Celestino ---------------------------------------------------------------- http://www.msversus.org/ ; http://techp.org/petition/show/1 http://www.vinc17.org/noswpat.en.html ---------------------------------------------------------------- "And on the trillionth day, Man created Gods." -- Thomas D. Pate
--- shared/misc-orig.c 2007-02-11 00:35:22.000000000 +0000 +++ shared/misc.c 2007-02-17 01:12:57.000000000 +0000 @@ -212,7 +212,7 @@ if(lstat(fname, &statbuf) != -1) { if(S_ISDIR(statbuf.st_mode) && !S_ISLNK(statbuf.st_mode)) { if(rmdir(fname) == -1) { /* can't be deleted */ - if(errno == EACCES) { + if(errno != ENOTEMPTY) { closedir(dd); free(fname); return 1; @@ -220,7 +220,11 @@ rmdirs(fname); } } else - unlink(fname); + if (unlink(fname) == -1) { + closedir(dd); + free(fname); + return 1; + } } free(fname);
12213 write(2, "LibClamAV debug: MD5(.tar.gz) = 75b8ec178d4e1e534f955bfbce4b19b2\n", 65) = 65 12213 write(2, "LibClamAV debug: cli_versig: Decoded signature: 75b8ec178d4e1e534f955bfbce4b19b2\n", 81) = 81 12213 write(2, "LibClamAV debug: cli_versig: Digital signature is correct.\n", 59) = 59 12213 close(6) = 0 12213 munmap(0x40094000, 4096) = 0 12213 open("./clamav-b98155eced458604160ab4d93a9f29a8", O_RDONLY) = 6 12213 fstat64(6, {st_mode=S_IFREG|0644, st_size=796318, ...}) = 0 12213 old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40094000 12213 read(6, "ClamAV-VDB:16 Feb 2007 23-37 +0000:2583:7951:13:75b8ec178d4e1e534f955bfbce4b19b2:Bbz8athLMAF+5x5nc/EzOvCqK0SKUepHgUr5qZAJnPA5dKkS8DfR79Z2RNlQDN4Oa+pcqAvdoMhYRNuCmAHAzUErR1YDoFBRwqkydyVEW9Mr65rZKxtLyRU2xXMMXxCT6dqEZ5Icpqq/nxhJMqyQon4oPcuZ++hye7PErLgSklg:sven:1171669048 \37\213\10\0\0\0\0\0\0\3\354\275k\223\0337\226-:_O\306\375\21\f\177i\253\247\304\311L<2\263<=\23%\251dU\267^VIv\313_\356\0012\221*\216Xd]\222%\271\332\341\377~\327\2\220\17\222Y\262\272\317\235\231\270\21S3n\361\221\00066\366c\355\215\r\360\361\253\327\357/^~\377O\377\231\177)\376\264\224\376\337Tf\373\377\246RdY\372OY\252\264\222\22\17\252\177J3!S\365O\263\364?\225\252\370w\273\335\231\315l\366O\237?\177~\330\230\235\271\357\271\337\373>L&\355\377\375\377\311\337\377\372_3\374}\377\362\335\354\373\363\227\347o\316\236\317^\277{\364\374\342\361\f\377\235\277\274<O\302\3\370\373\321m\266\213\365j\226\237\314\376|\273r\263\254\252\262$\231=^\337\334m\26\37\256v\263o\37?\300\207eu\342\277\232=\33587\273\\\267\273\317f\343fO\327\267+\260\17\35\234\314.V\365<\361}\252j\366\326]\337,\335\354\365\322\324\356dvy\273\330\271\231\20\351\311\354\321z\273\343\323/\316f\2634\317\262\354a&\322b6{wy\226\314\316?\271\315\335\32T,\266\263\33\267\271^\354v\256\231\355\326\263\32\344\314\314\252\2315\213\355n\263\260\267\350\16\317Z\f}\315/\27n\233\314\326\355lw\205\226\313E\355V[7k\326\365\355\265[\355Nfx~V_\231\325\207\305\352\303l\261c\367\253\365nf\226\313\365g\327\314\23\260\303\363\343\365\306\231k\273t`\300\354\355\225\353z\332\316\332\365fv\r\312g\333n\346\374\257q\333\305\207U\240pg>\342\303\317\346nv\267\276\335$-\330\324\254\257\371\315\366\312?\17\342=\t\230\334n>\233=\272\3\335\253\335\306lA\337\16c\371\305r+\2671\313\331\353[\213\241\223\347q\" w\261\332\271"..., 4096) = 4096 12213 close(6) = 0 12213 munmap(0x40094000, 4096) = 0 12213 rename("./clamav-b98155eced458604160ab4d93a9f29a8", "daily.cvd") = 0 12213 open("daily.inc", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 6 12213 fstat64(6, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 12213 fcntl64(6, F_SETFD, FD_CLOEXEC) = 0 12213 stat64("daily.inc", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 12213 rmdir("daily.inc") = -1 ENOTEMPTY (Directory not empty) 12213 getdents64(0x6, 0x805d130, 0x1000, 0x4023dc80) = 400 12213 lstat64("daily.inc/COPYING", {st_mode=S_IFREG|0644, st_size=17992, ...}) = 0 12213 unlink("daily.inc/COPYING") = -1 EACCES (Permission denied) 12213 lstat64("daily.inc/daily.db", {st_mode=S_IFREG|0644, st_size=22942, ...}) = 0 12213 unlink("daily.inc/daily.db") = -1 EACCES (Permission denied) 12213 lstat64("daily.inc/daily.hdb", {st_mode=S_IFREG|0644, st_size=10049, ...}) = 0 12213 unlink("daily.inc/daily.hdb") = -1 EACCES (Permission denied) 12213 lstat64("daily.inc/daily.ndb", {st_mode=S_IFREG|0644, st_size=1444463, ...}) = 0 12213 unlink("daily.inc/daily.ndb") = -1 EACCES (Permission denied) 12213 lstat64("daily.inc/daily.zmd", {st_mode=S_IFREG|0644, st_size=1848, ...}) = 0 12213 unlink("daily.inc/daily.zmd") = -1 EACCES (Permission denied) 12213 lstat64("daily.inc/daily.fp", {st_mode=S_IFREG|0644, st_size=2062, ...}) = 0 12213 unlink("daily.inc/daily.fp") = -1 EACCES (Permission denied) 12213 lstat64("daily.inc/daily.mdb", {st_mode=S_IFREG|0644, st_size=94062, ...}) = 0 12213 unlink("daily.inc/daily.mdb") = -1 EACCES (Permission denied) 12213 lstat64("daily.inc/daily.info", {st_mode=S_IFREG|0644, st_size=413, ...}) = 0 12213 unlink("daily.inc/daily.info") = -1 EACCES (Permission denied) 12213 lstat64("daily.inc/daily.wdb", {st_mode=S_IFREG|0644, st_size=177, ...}) = 0 12213 unlink("daily.inc/daily.wdb") = -1 EACCES (Permission denied) 12213 lstat64("daily.inc/daily.pdb", {st_mode=S_IFREG|0644, st_size=1646, ...}) = 0 12213 unlink("daily.inc/daily.pdb") = -1 EACCES (Permission denied) 12213 lstat64("daily.inc/daily.cfg", {st_mode=S_IFREG|0644, st_size=19, ...}) = 0 12213 unlink("daily.inc/daily.cfg") = -1 EACCES (Permission denied) 12213 getdents64(0x6, 0x805d130, 0x1000, 0x4023dc80) = 0 12213 lseek(6, 0, SEEK_SET) = 0 12213 stat64("daily.inc", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 12213 rmdir("daily.inc") = -1 ENOTEMPTY (Directory not empty) 12213 getdents64(0x6, 0x805d130, 0x1000, 0x4023dc80) = 400 12213 lstat64("daily.inc/COPYING", {st_mode=S_IFREG|0644, st_size=17992, ...}) = 0 12213 unlink("daily.inc/COPYING") = -1 EACCES (Permission denied) 12213 lstat64("daily.inc/daily.db", {st_mode=S_IFREG|0644, st_size=22942, ...}) = 0 12213 unlink("daily.inc/daily.db") = -1 EACCES (Permission denied) 12213 lstat64("daily.inc/daily.hdb", {st_mode=S_IFREG|0644, st_size=10049, ...}) = 0 12213 unlink("daily.inc/daily.hdb") = -1 EACCES (Permission denied) 12213 lstat64("daily.inc/daily.ndb", {st_mode=S_IFREG|0644, st_size=1444463, ...}) = 0 12213 unlink("daily.inc/daily.ndb") = -1 EACCES (Permission denied) 12213 lstat64("daily.inc/daily.zmd", {st_mode=S_IFREG|0644, st_size=1848, ...}) = 0 12213 unlink("daily.inc/daily.zmd") = -1 EACCES (Permission denied) 12213 lstat64("daily.inc/daily.fp", {st_mode=S_IFREG|0644, st_size=2062, ...}) = 0 12213 unlink("daily.inc/daily.fp") = -1 EACCES (Permission denied) 12213 lstat64("daily.inc/daily.mdb", {st_mode=S_IFREG|0644, st_size=94062, ...}) = 0 12213 unlink("daily.inc/daily.mdb") = -1 EACCES (Permission denied) 12213 lstat64("daily.inc/daily.info", {st_mode=S_IFREG|0644, st_size=413, ...}) = 0 12213 unlink("daily.inc/daily.info") = -1 EACCES (Permission denied) 12213 lstat64("daily.inc/daily.wdb", {st_mode=S_IFREG|0644, st_size=177, ...}) = 0 12213 unlink("daily.inc/daily.wdb") = -1 EACCES (Permission denied) 12213 lstat64("daily.inc/daily.pdb", {st_mode=S_IFREG|0644, st_size=1646, ...}) = 0 12213 unlink("daily.inc/daily.pdb") = -1 EACCES (Permission denied) 12213 lstat64("daily.inc/daily.cfg", {st_mode=S_IFREG|0644, st_size=19, ...}) = 0 12213 unlink("daily.inc/daily.cfg") = -1 EACCES (Permission denied) 12213 getdents64(0x6, 0x805d130, 0x1000, 0x4023dc80) = 0 12213 lseek(6, 0, SEEK_SET) = 0 12213 stat64("daily.inc", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 12213 rmdir("daily.inc") = -1 ENOTEMPTY (Directory not empty) 12213 getdents64(0x6, 0x805d130, 0x1000, 0x4023dc80) = 400 12213 lstat64("daily.inc/COPYING", {st_mode=S_IFREG|0644, st_size=17992, ...}) = 0 12213 unlink("daily.inc/COPYING") = -1 EACCES (Permission denied) 12213 lstat64("daily.inc/daily.db", {st_mode=S_IFREG|0644, st_size=22942, ...}) = 0 12213 unlink("daily.inc/daily.db") = -1 EACCES (Permission denied) 12213 lstat64("daily.inc/daily.hdb", {st_mode=S_IFREG|0644, st_size=10049, ...}) = 0 12213 unlink("daily.inc/daily.hdb") = -1 EACCES (Permission denied) 12213 lstat64("daily.inc/daily.ndb", {st_mode=S_IFREG|0644, st_size=1444463, ...}) = 0 12213 unlink("daily.inc/daily.ndb") = -1 EACCES (Permission denied) 12213 lstat64("daily.inc/daily.zmd", {st_mode=S_IFREG|0644, st_size=1848, ...}) = 0 12213 unlink("daily.inc/daily.zmd") = -1 EACCES (Permission denied) 12213 lstat64("daily.inc/daily.fp", {st_mode=S_IFREG|0644, st_size=2062, ...}) = 0 12213 unlink("daily.inc/daily.fp") = -1 EACCES (Permission denied) 12213 lstat64("daily.inc/daily.mdb", {st_mode=S_IFREG|0644, st_size=94062, ...}) = 0 12213 unlink("daily.inc/daily.mdb") = -1 EACCES (Permission denied) 12213 lstat64("daily.inc/daily.info", {st_mode=S_IFREG|0644, st_size=413, ...}) = 0 12213 unlink("daily.inc/daily.info") = -1 EACCES (Permission denied) 12213 lstat64("daily.inc/daily.wdb", {st_mode=S_IFREG|0644, st_size=177, ...}) = 0 12213 unlink("daily.inc/daily.wdb") = -1 EACCES (Permission denied) 12213 lstat64("daily.inc/daily.pdb", {st_mode=S_IFREG|0644, st_size=1646, ...}) = 0 12213 unlink("daily.inc/daily.pdb") = -1 EACCES (Permission denied) 12213 lstat64("daily.inc/daily.cfg", {st_mode=S_IFREG|0644, st_size=19, ...}) = 0 12213 unlink("daily.inc/daily.cfg") = -1 EACCES (Permission denied) 12213 getdents64(0x6, 0x805d130, 0x1000, 0x4023dc80) = 0 12213 lseek(6, 0, SEEK_SET) = 0 12213 stat64("daily.inc", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 12213 rmdir("daily.inc") = -1 ENOTEMPTY (Directory not empty) 12213 getdents64(0x6, 0x805d130, 0x1000, 0x4023dc80) = 400 12213 lstat64("daily.inc/COPYING", {st_mode=S_IFREG|0644, st_size=17992, ...}) = 0 12213 unlink("daily.inc/COPYING") = -1 EACCES (Permission denied) 12213 lstat64("daily.inc/daily.db", {st_mode=S_IFREG|0644, st_size=22942, ...}) = 0 12213 unlink("daily.inc/daily.db") = -1 EACCES (Permission denied) 12213 lstat64("daily.inc/daily.hdb", {st_mode=S_IFREG|0644, st_size=10049, ...}) = 0 12213 unlink("daily.inc/daily.hdb") = -1 EACCES (Permission denied) 12213 lstat64("daily.inc/daily.ndb", {st_mode=S_IFREG|0644, st_size=1444463, ...}) = 0 12213 unlink("daily.inc/daily.ndb") = -1 EACCES (Permission denied) 12213 lstat64("daily.inc/daily.zmd", {st_mode=S_IFREG|0644, st_size=1848, ...}) = 0 12213 unlink("daily.inc/daily.zmd") = -1 EACCES (Permission denied) 12213 lstat64("daily.inc/daily.fp", {st_mode=S_IFREG|0644, st_size=2062, ...}) = 0 12213 unlink("daily.inc/daily.fp") = -1 EACCES (Permission denied) 12213 lstat64("daily.inc/daily.mdb", {st_mode=S_IFREG|0644, st_size=94062, ...}) = 0 12213 unlink("daily.inc/daily.mdb") = -1 EACCES (Permission denied) 12213 lstat64("daily.inc/daily.info", {st_mode=S_IFREG|0644, st_size=413, ...}) = 0 12213 unlink("daily.inc/daily.info") = -1 EACCES (Permission denied) 12213 lstat64("daily.inc/daily.wdb", {st_mode=S_IFREG|0644, st_size=177, ...}) = 0 12213 unlink("daily.inc/daily.wdb") = -1 EACCES (Permission denied) 12213 lstat64("daily.inc/daily.pdb", {st_mode=S_IFREG|0644, st_size=1646, ...}) = 0 12213 unlink("daily.inc/daily.pdb") = -1 EACCES (Permission denied) 12213 lstat64("daily.inc/daily.cfg", {st_mode=S_IFREG|0644, st_size=19, ...}) = 0 12213 unlink("daily.inc/daily.cfg") = -1 EACCES (Permission denied) 12213 getdents64(0x6, 0x805d130, 0x1000, 0x4023dc80) = 0 12213 lseek(6, 0, SEEK_SET) = 0 12213 stat64("daily.inc", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 12213 rmdir("daily.inc") = -1 ENOTEMPTY (Directory not empty) 12213 getdents64(0x6, 0x805d130, 0x1000, 0x4023dc80) = 400 12213 lstat64("daily.inc/COPYING", {st_mode=S_IFREG|0644, st_size=17992, ...}) = 0 ........
_______________________________________________ http://lurker.clamav.net/list/clamav-devel.html