So earlier this week, I was trying to compile and run a network daemon which we are writing at work that used the pthread_create() system call. The problem I found was that whenever the program would try to call pthread_create(), the program would segfault. The backtrace would contain all of the calls leading up to pthread_create(), but not pthread_create() itself, and valgrind would report an error that the system had tried to jump to address 0x0.
The primary developer of this daemon, however, had no problem running copies of the daemon that he had compiled. I spent all morning trying to figure out the cause of this problem, when I decided to run ldd on each of our binaries. I found that his was linked against libpthread, but mine was not. I added -lpthread to Makefile.am and recompiled, and mine worked. The question is this: if I wasn't linking with libpthread, then shouldn't the linker have complained at me that it couldn't resolve the symbol for pthread_create() when I was compiling? Why did this problem persist long enough to be an unidentifiable runtime error? --Ken Bloom _______________________________________________ vox-tech mailing list [email protected] http://lists.lugod.org/mailman/listinfo/vox-tech
