pthread_key_create and !-lpthreads binaries

Robert Watson rwatson at FreeBSD.org
Sun Mar 13 19:33:55 UTC 2011


Dear threading folk:

This afternoon I wrote some threaded code for Mac OS X, and then checked it 
out on FreeBSD and was a bit surprised when it compiled but didn't work. 
Turns out, of course, that on Mac OS X I'd omitted -lpthread and not noticed, 
as the thread primitives are in libSystem.  It ran, and the reason I ran into 
trouble is that, although no-op locking calls are fine, getting back "success" 
from pthread_key_create() when it has actually failed is problematic.

Would it be possible to make the thread stub for pthread_key_create() return 
an error, instead of succeeding (but not actually succeeding)?  Or, perhaps 
better yet, I should get a link-time error for that function, even though I 
shouldn't get one for lock/unlock?

Thanks,

Robert N M Watson
Computer Laboratory
University of Cambridge


More information about the freebsd-threads mailing list