[vox-tech] Wierd linker thing

Kenneth Bloom kabloom at ucdavis.edu
Wed Jul 6 10:22:35 PDT 2005


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


More information about the vox-tech mailing list