i have the following problemCode:# include <pthread.h> # include <stdio.h> # include <stdlib.h> # define NUM_THREADS 10 void *print(void*tid) {tid; printf("hello from thread \n"); int x=32768; while(x>0) { x=x-1; } int result; int check1,check2; check1=pthread_attr_getscope(tid,&result); printf("scope %d \n",result); check2=pthread_attr_getstacksize(tid,&result); printf("stack size %d \n",result); if((check1!=0)||(check2!=0)) printf("error getting attributes"); pthread_exit(NULL); } void *destruct(void* tth) {int status; status=pthread_attr_destroy(tth); if(status=0) printf("attribute object destroyed sucessfully \n"); else printf("error %d destroying attribute object \n",status); pthread_t d=(pthread_t)tth; status=pthread_cancel(d); if(status=0) printf("thread destroyed sucessfully"); else printf("error %d destroying thread ",status); } int main() { pthread_t threads[NUM_THREADS],destr,vict; int status,i; for(i=0;i<NUM_THREADS;i++){ printf("creation of thread %d \n",i); status=pthread_create(&threads[i],NULL,print,(void*)threads[i]); if(status!=0){ printf("error code %d \n",status); exit(-1); }} status=pthread_create(&vict,NULL,NULL,NULL); if(status!=0){ printf("error creating victim thread %d \n",status); } status=pthread_create(&destr,NULL,destruct,(void*)vict); if(status!=0){ printf("error creating destroyer thread %d \n",status); } }
when i execute it i get sometimes segmentation fault and other times the program finishes without an error but it does not execute the three last lines




Reply With Quote