seg fault on kse_release () (fwd)

Jose Hidalgo Herrera jose at hostarica.com
Tue Jan 25 08:34:06 PST 2005


I ran it into:
4.11-STABLE FreeBSD Wed Jan 19 15:23:33 CST 2005
What you find in 
http://www1.cr.freebsd.org/~jose/stress.tgz
is the output of:
ktrace ./a.out > stress.txt


On Mon, 2005-01-24 at 14:27 -0800, Yan Yu wrote:
> Hi, all,  I have a newbie Q:
>     I am trying to use creating large number of threads and allocting
> memory to stress the system.
> My user program causes SEG fault in the kernel code, kse_release () in
> kern_kse.c.
> (it SEG fault before the system can be stressed;(
> 
> the stack when the SEG fault happens are:
> #0  0x08064e54 in kse_release ()
> #1  0x080531c4 in kse_sched_single ()
> #2  0x00000000 in ?? ()
> 
> My simple program is:
> I have a simple function to create threads:
> 
> #define NUM_THREADS     5000
> #define THREADS_IN_ONE_PROCESS  5
> #define BSIZE  500000
> static int  cc;
> 
> void CreateThread(int n)
> {
>    assert( n <= NUM_THREADS );
>    pthread_t threads[NUM_THREADS];
>    int rc, t;
>    for(t=0;t < n;t++){
>       printf("#%d: Creating thread %d\n", cc, t);
>       cc++;
>       rc = pthread_create(&threads[t], NULL, PrintHello, (void *)t);
>       if (rc){
>          printf("ERROR; return code from pthread_create() is %d\n", rc);
>       }
>    }
> 
>    unsigned long id;
>    char * p = (char *) calloc(BSIZE, sizeof(char) );
>    if ( p == NULL )
>    {
>         fprintf(stderr, "calloc error\n");
>    }
>    while (1)
>    {
>         while (BSIZE <= (id = rand() / (RAND_MAX/BSIZE)));
>         p[id] ++;
>    }
> }
> 
> void *PrintHello(void *threadid)
> {
>    printf("\n%d: Hello World!\n", threadid);
>    CreateThread(THREADS_IN_ONE_PROCESS);
>    pthread_exit(NULL);
> }
> 
> int main (int argc, char *argv[])
> {
>    CreateThread(THREADS_IN_ONE_PROCESS);
> }
> 
> The SEG fault happens after creating nearly 5000 threads.
> and I use the default pthread.h coming w/ freeBSD 5.3
> #define PTHREAD_KEYS_MAX                        256
> #define PTHREAD_STACK_MIN                       (1 << 22)
> #define PTHREAD_THREADS_MAX                     ULONG_MAX
> 
> 
> Any idea on what might happen?
> 
> Many Thanks!
> yan
> _______________________________________________
> freebsd-hackers at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
> To unsubscribe, send any mail to "freebsd-hackers-unsubscribe at freebsd.org"
-- 
Jose Hidalgo Herrera <jose at hostarica.com>
Corp. Hostarica



More information about the freebsd-hackers mailing list