Howdy-
We've recently been seeing our clamd processes run very hot (spiking
up to 85% of the CPU as reported by prtstat and top) on two different
Solaris 9 boxes. For example, here's a few lines from prtstat -L
(showing the two clamav threads who are together eating 66% of the
CPU) .
PID USERNAME SIZE RSS STATE PRI NICE TIME CPU PROCESS/LWPID
18447 root 61M 60M run 00 0:27:51 34% clamd/14
18447 root 61M 60M cpu0200 0:25:40 32% clamd/22
Both machines are running 0.88.2 clamds being fed by exim. We'll
upgrade to 88.4 shortly, but I haven't seen anything in the release
notes that mentions this issue. I've looked at all of the obvious
things I can think of (we are not swapping due to lack of memory as
far as I can tell, not out of any resources like file descriptors,
and so on) so I was hoping someone here could offer some advice on
any other avenues to pursue. I've even done things like moving the
temp directory to a tmpfs filesystem, but that hasn't helped the load
any.
I've included gdb backtraces for all threads below and also a copy of
the truss counts for the process so you can see which system calls
are being made (and which are giving errors, probably normally). I've
included our non-default config options below. I've also included an
ldd of the binary so you can see that we have it linked against
almost all standard Solaris libs (all of which I think are patched
properly, let me know if there is something I should check there).
If there is anything else I should be checking, please let me know.
Thanks for any help you can offer.
-- dNb
GDB:
(gdb) info thread
5 LWP 63 0xff0858f4 in __lwp_park () from /usr/lib/libthread.so.1
4 LWP 14 0xff330d98 in getline_from_mbox ()
from /arch/daemons/packages/clamav-0.88.2/lib/libclamav.so.1
3 LWP 62 0xff0858f4 in __lwp_park () from /usr/lib/libthread.so.1
2 LWP 22 0xff309c98 in cli_ac_scanbuff ()
from /arch/daemons/packages/clamav-0.88.2/lib/libclamav.so.1
* 1 LWP 1 0xff01c934 in _so_accept () from /usr/lib/libc.so.1
(gdb) bt
#0 0xff01c934 in _so_accept () from /usr/lib/libc.so.1
#1 0x0001a95c in acceptloop_th ()
#2 0x00018514 in localserver ()
#3 0x00017be0 in clamd ()
#4 0x00016758 in main ()
(gdb) thread 2
[Switching to thread 2 (LWP 22)]#0 0xff309c98 in cli_ac_scanbuff ()
from /arch/daemons/packages/clamav-0.88.2/lib/libclamav.so.1
(gdb) bt
#0 0xff309c98 in cli_ac_scanbuff ()
from /arch/daemons/packages/clamav-0.88.2/lib/libclamav.so.1
#1 0xff30bd50 in cli_scandesc ()
from /arch/daemons/packages/clamav-0.88.2/lib/libclamav.so.1
#2 0xff31cca8 in cli_scanraw ()
from /arch/daemons/packages/clamav-0.88.2/lib/libclamav.so.1
#3 0xff31d864 in cli_magic_scandesc ()
from /arch/daemons/packages/clamav-0.88.2/lib/libclamav.so.1
#4 0xff31daa4 in cli_scanfile ()
from /arch/daemons/packages/clamav-0.88.2/lib/libclamav.so.1
#5 0xff31b134 in cli_scandir ()
from /arch/daemons/packages/clamav-0.88.2/lib/libclamav.so.1
#6 0xff31cb90 in cli_scanmail ()
from /arch/daemons/packages/clamav-0.88.2/lib/libclamav.so.1
#7 0xff31d4d8 in cli_magic_scandesc ()
from /arch/daemons/packages/clamav-0.88.2/lib/libclamav.so.1
#8 0xff31daa4 in cli_scanfile ()
from /arch/daemons/packages/clamav-0.88.2/lib/libclamav.so.1
#9 0xff31b134 in cli_scandir ()
from /arch/daemons/packages/clamav-0.88.2/lib/libclamav.so.1
#10 0xff31cb90 in cli_scanmail ()
from /arch/daemons/packages/clamav-0.88.2/lib/libclamav.so.1
#11 0xff31d4d8 in cli_magic_scandesc ()
from /arch/daemons/packages/clamav-0.88.2/lib/libclamav.so.1
#12 0xff31daa4 in cli_scanfile ()
from /arch/daemons/packages/clamav-0.88.2/lib/libclamav.so.1
#13 0xff31b134 in cli_scandir ()
from /arch/daemons/packages/clamav-0.88.2/lib/libclamav.so.1
#14 0xff31cb90 in cli_scanmail ()
from /arch/daemons/packages/clamav-0.88.2/lib/libclamav.so.1
#15 0xff31d4d8 in cli_magic_scandesc ()
from /arch/daemons/packages/clamav-0.88.2/lib/libclamav.so.1
#16 0xff31daa4 in cli_scanfile ()
from /arch/daemons/packages/clamav-0.88.2/lib/libclamav.so.1
#17 0xff31b134 in cli_scandir ()
from /arch/daemons/packages/clamav-0.88.2/lib/libclamav.so.1
#18 0xff31cb90 in cli_scanmail ()
from /arch/daemons/packages/clamav-0.88.2/lib/libclamav.so.1
#19 0xff31d4d8 in cli_magic_scandesc ()
from /arch/daemons/packages/clamav-0.88.2/lib/libclamav.so.1
#20 0xff31daa4 in cli_scanfile ()
from /arch/daemons/packages/clamav-0.88.2/lib/libclamav.so.1
#21 0xff31b134 in cli_scandir ()
from /arch/daemons/packages/clamav-0.88.2/lib/libclamav.so.1
#22 0xff31cb90 in cli_scanmail ()
from /arch/daemons/packages/clamav-0.88.2/lib/libclamav.so.1
#23 0xff31d4d8 in cli_magic_scandesc ()
from /arch/daemons/packages/clamav-0.88.2/lib/libclamav.so.1
#24 0xff31daa4 in cli_scanfile ()
from /arch/daemons/packages/clamav-0.88.2/lib/libclamav.so.1
#25 0xff31b134 in cli_scandir ()
from