pythonic
pythonic

Reputation: 21589

pthread_create causing segmentation fault

My program contains the following code.

pthread_t PThreadTable[32];

 for (i=1; i<P; i++) // Checked with P = 4 
    {
        long    i, Error;

        printf( "pthread_create %d!\n", i );
        Error = pthread_create(&PThreadTable[i], NULL, 
          (void * (*)(void *))(SlaveStart), NULL);
        if (Error != 0) 
        {
            printf("Error in pthread_create().\n");
            exit(-1);
        }
    }

 SlaveStart();

The code gives segmentation fault on calling pthread_create (checked through gdb and valgrind). Why so?

Upvotes: 1

Views: 4695

Answers (1)

MetallicPriest
MetallicPriest

Reputation: 30735

Its because you redeclare variable i inside the loop. The variable inside the loop is being used and it contains garbage value. That is why, the expression &PThreadTable[i] points to a wrong address and you get a segmentation fault.

Upvotes: 8

Related Questions