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] |
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] |