pthread_exit behavior from main

Bharath Ramesh bramesh@vt.edu
Thu Oct 4 22:05:00 GMT 2012


I am attaching a small code snippet and I am little bit curious
on the behavior of pthread_exit from main based on the output. I
am passing the address of local stack variable to the threads
main is creating. In the thread function I am printing its value.
The issue I am noticing is that the value printed isnt what I am
expecting it to be "42" for each thread every run. If I run many
instances of the application simultaneously some threads report
"0" instead of "42".

I suspect this behavior is because probably main's stack isnt
valid. I agree that it is bad programming practice to pass a
local stack variable to the threads spawned. I am confused by the
behavior based on what is stated in the pthread_exit manpage [1]
in the notes section. The manpage states "To allow other threads
to continue execution, the main thread should terminate by
calling pthread_exit() rather than exit(3)". Does this imply that
main's stack will be valid till all the threads exit?

I would really appreciate it if somebody could clarify this
behavior I am seeing.

[1] http://www.kernel.org/doc/man-pages/online/pages/man3/pthread_exit.3.html

-- 
Bharath
-------------- next part --------------
A non-text attachment was scrubbed...
Name: pthread_exit.c
Type: text/x-csrc
Size: 541 bytes
Desc: not available
URL: <http://sourceware.org/pipermail/libc-help/attachments/20121004/c8dc8d4b/attachment.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/x-pkcs7-signature
Size: 4551 bytes
Desc: not available
URL: <http://sourceware.org/pipermail/libc-help/attachments/20121004/c8dc8d4b/attachment-0001.bin>


More information about the Libc-help mailing list