Re: while_each_thread() under rcu_read_lock() is broken?

From: Oleg Nesterov
Date: Thu Jun 24 2010 - 18:02:21 EST


On 06/24, Chris Friesen wrote:
>
> On 06/24/2010 12:07 PM, Paul E. McKenney wrote:
>
> > 3. The thread-group leader might do pthread_exit(), removing itself
> > from the thread group -- and might do so while the hapless reader
> > is referencing that thread.
> >
> > But isn't this prohibited? Or is it really legal to do a
> > pthread_create() to create a new thread and then have the
> > parent thread call pthread_exit()? Not something I would
> > consider trying in my own code! Well, I might, just to
> > be perverse, but... ;-)
>
> I believe SUS allows the main thread to explicitly call pthread_exit(),
> leaving the other threads to run. If the main() routine just returns
> then it implicitly calls exit().

Correct.

But, to clarify, if the main thread does pthread_exit() (sys_exit,
actually), it won't be removed from the group. It will be zombie
until all other threads exit.

Oleg.

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/