Dear Thomas....Christophe....everyone.... Thank you for your time and effort to explain these to me..... I will observe the details again in a week or two... right now, my best conclusion is, LDT is created so each thread won't cross "the police line" and access the other thread's storage. This is proven by the result of strace that shows, during each clone syscall, a new base address and limit are passed into kernel space in order to create new LDT entry Another raw conclusion I got ... from gcc -S result executed on the my pthread progran, I did see an assembly instruction (movl IIRC) that retrieves a content of memory address with the following format %gs:<some offset>. So I guess, gs here is indeed used to point on the related segment for the running thread regards Mulyadi -- Kernelnewbies: Help each other learn about the Linux kernel. Archive: http://mail.nl.linux.org/kernelnewbies/ FAQ: http://kernelnewbies.org/faq/