On Wed, Jul 06, 2005 at 10:22:35AM -0700, Kenneth Bloom wrote: > > 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?
libc contains stubs for the pthread functions. IIRC, this is so one copy of libc can work with both single and multi-threaded libraries. -troy (whose C programming is at best a D+) _______________________________________________ vox-tech mailing list [email protected] http://lists.lugod.org/mailman/listinfo/vox-tech
