From owner-freebsd-stable@FreeBSD.ORG Sun Mar 4 21:16:45 2007 Return-Path: X-Original-To: freebsd-stable@freebsd.org Delivered-To: freebsd-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id E2BEF16A402; Sun, 4 Mar 2007 21:16:45 +0000 (UTC) (envelope-from mb@imp.ch) Received: from pop.imp.ch (mx2.imp.ch [157.161.9.17]) by mx1.freebsd.org (Postfix) with ESMTP id 8271313C461; Sun, 4 Mar 2007 21:16:45 +0000 (UTC) (envelope-from mb@imp.ch) Received: from dan.imp.ch (godot.imp.ch [157.161.4.8]) by pop.imp.ch (8.13.8/8.13.8/Submit_imp) with ESMTP id l24LGghQ032623; Sun, 4 Mar 2007 22:16:43 +0100 (CET) (envelope-from mb@imp.ch) Date: Sun, 4 Mar 2007 22:16:42 +0100 (CET) From: Martin Blapp To: ClamAV Development In-Reply-To: <20070227183553.B18301@godot.imp.ch> Message-ID: <20070304214255.O18301@godot.imp.ch> References: <003701c75a03$fb478ac0$d801a8c0@dimuthu> <200702270305.l1R35MX2067221@lava.sentex.ca> <20070227035603.GA49430@tmn.ru> <20070227183553.B18301@godot.imp.ch> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: deischen@freebsd.org, freebsd-stable@freebsd.org Subject: Re: Clamav-90_2 Lockup with freebsd 6.2 X-BeenThere: freebsd-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Production branch of FreeBSD source code List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 04 Mar 2007 21:16:46 -0000 Hi all, After adding some debug stuff to clamd running with freebsd libpthread.so I found that: looking at the output value of 'ps -auxH | grep clamd | grep -v grep | wc -l' is always staying at 6 threads, but the number of threadpool->thr_alive is going higher and higher. So threadpool->thr_alive isn't decreased and is completly incorrect. In my tests the number of threads with libpthread.so is never going higher than 6 threads. That explains, why a higher load is going to delay all scan operations more and more. With libthr.so the value of threadpool->thr_alive is equal with the output of the ps. It can go very high, but always goes back if no more work is there to do. After the maxthreads limit is reached, clamd becomes completly unresponsive with libpthreads.so. SIGKILL and SIGSTOP don't work because some (unexisting) worker threads block on pthread_cond_timedwait(). Only kill -9 helps. Of course, the counter threadpool->thr_alive is wrong and may cause this problem. Maybe someone with more threads knowledge can help here. I'll now add some debug stuff to see where threadpool->thr_alive is going to be increased and where it is decreased. The strange thing is that this works fine with libthr.so. Martin