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


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.

M

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>


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