This is the mail archive of the libc-help@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: pthread_exit behavior from main


On 10/4/2012 8:30 PM, Mirko Banchi wrote:
Each thread has its own stack and it's not shared between other threads. This is the reason why you don't see the value 42.
Yes, each thread has its own stack. I am passing the address of a local variable in main's thread. Then I de-reference that address in the thread function, which should be a valid address in the address space. It is not like I am declaring a new local stack variable in the thread function. The issue is that some thread do print the value "42" as expected.


Il giorno 05/ott/2012, alle ore 00:05, Bharath Ramesh <bramesh@vt.edu> ha scritto:

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
<pthread_exit.c>

-- Bharath


Attachment: smime.p7s
Description: S/MIME Cryptographic Signature


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]