This is the mail archive of the
libc-help@sourceware.org
mailing list for the glibc project.
Re: pthread_exit behavior from main
- From: Mirko Banchi <mk dot banchi at gmail dot com>
- To: Bharath Ramesh <bramesh at vt dot edu>
- Cc: "libc-help at sourceware dot org" <libc-help at sourceware dot org>
- Date: Fri, 5 Oct 2012 02:30:42 +0200
- Subject: Re: pthread_exit behavior from main
- References: <20121004220540.GI3182@vt.edu>
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>