I think you can avoid this by using the primitive: lwpid_t tid; syscall (SYS_thr_self, &tid);
There is a mess in kernel interfaces, the right one is long tid; syscall (SYS_thr_self, &tid); But it holds only for current pthread implementation, it can be changed anytime. Petr