On Mon, Nov 26, 2001, Oleg Goldshmidt wrote about "threads question": > static void* start(void* arg) > { > int c = *((int*)arg); > free(arg); > ..... > } > > int main(void) > { > int* arg = NULL; > > if ((arg = (int*)malloc(sizeof(*arg))) == NULL) >... > if (pthread_create(NULL, NULL, start, arg) != 0) > { > free(arg); > fprintf(stderr,"Error: %s\n",strerror(errno)); > return EXIT_FAILURE; > } > > return EXIT_SUCCESS; > } >
What is this last return statement?? Returning from main? That's not something you're supposed to do in a multithreaded program. It might, for example, free the entire malloc pool, including arg which is later freed in the second thread, causing a segmentation fault. To reiterate - any thread might simply 'return', but the main thread may not. Try replacing "return EXIT_SUCCESS" by "pause()" (for example) and see if it now works. -- Nadav Har'El | Monday, Nov 26 2001, 12 Kislev 5762 [EMAIL PROTECTED] |----------------------------------------- Phone: +972-53-245868, ICQ 13349191 |I before E except after C. We live in a http://nadav.harel.org.il |weird society! ================================================================= To unsubscribe, send mail to [EMAIL PROTECTED] with the word "unsubscribe" in the message body, e.g., run the command echo unsubscribe | mail [EMAIL PROTECTED]