On 6/19/07, George Georgalis <[EMAIL PROTECTED]> wrote:
> A week or so ago clamd stopped working for me,
> after upgrading to 0.90.3 --experimental I still get
> an unusable system.
>
> Linux ohm 2.4.20-ohm #1 Sat Jan 11 01:41:24 EST 2003 i586 unknown
>
> 2007-06-19 00:46:18.927419500 Reading databases from /usr/local/share/clamav
> 2007-06-19 00:46:20.709107500 
> /var/qmail/prequeue/1182228387.M945008P19386.ohm: OK
> 2007-06-19 00:49:44.064874500 Database correctly reloaded (127862 signatures)
> 2007-06-19 00:49:44.090803500 ERROR: pthread_create failed
> 2007-06-19 00:49:44.094281500 ERROR: pthread_create failed
> 2007-06-19 00:49:44.096545500 ERROR: pthread_create failed
> 2007-06-19 00:49:44.098762500 ERROR: pthread_create failed
> 2007-06-19 00:51:30.004529500 ERROR: pthread_create failed
>

Do you have some limits on number of processes (ulimit -a)?
What is your MaxThreads setting in clamd.conf?
If you think those limits are ok, open a bugreport on the bugzilla,
and attach the above info,
and possibly an strace output.
Also try running the program below to find out reason of failure:


/* gcc -o pthread_test.c -pthread pthread_test.c
 * Run as:
 * pthread_test MaxThreads
 *   where MaxThreads is your setting from clamd.conf
 */

#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sched.h>

static pthread_mutex_t cond_mut;
static pthread_cond_t  cond;
static pthread_attr_t  attr;

static size_t tcnt=0;
static void* idle_func(void* arg)
{
        pthread_mutex_lock(&cond_mut);
        tcnt++;
        pthread_cond_wait(&cond,&cond_mut);
        pthread_mutex_unlock(&cond_mut);
        return NULL;
}

int main(int argc, char* argv[])
{
        pthread_t* threads;
        size_t cnt, i;


        if(argc!=2) {
                fprintf(stderr,"Usage:%s <number of threads>\n",argv[0]);
                return 1;
        }       
        cnt = atoi(argv[1]);
        threads = malloc(cnt*sizeof(*threads));
        if(!threads) {
                perror("Malloc failed");
                return 2;
        }
        pthread_mutex_init(&cond_mut,NULL);
        pthread_cond_init(&cond, NULL);
        if(pthread_attr_init(&attr)) {
                fprintf(stderr,"pthread_attr_init failed\n");
                return 3;
        }
        if (pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED)) {
                fprintf(stderr,"pthread_attr_setdetachstate failed\n");
                return 4;
        }
        printf("Creating %u threads\n",cnt);
        for(i=0;i<cnt;i++) {
                int rc = pthread_create(&threads[i],&attr,idle_func,NULL);
                if(rc) {
                        fprintf(stderr,"pthread_create 
failed:%s\n",strerror(rc));
                        return 5;
                }
        }
        printf("Waiting for threads to start\n");
        while(tcnt!=cnt)
                sched_yield();
        printf("Signaling threads\n");
        pthread_mutex_lock(&cond_mut);
        pthread_cond_broadcast(&cond);
        pthread_mutex_unlock(&cond_mut);
        free(threads);
        return 0;
}
_______________________________________________
http://lurker.clamav.net/list/clamav-devel.html
Please submit your patches to our Bugzilla: http://bugs.clamav.net

Reply via email to