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

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Paul E. McKenney
Date: Thursday, June 24, 2010 - 8:37 pm

On Thu, Jun 24, 2010 at 02:14:46PM -0700, Roland McGrath wrote:

Understood -- I wasn't saying that each category posed a unique problem,
but rather making sure that I really had enumerated all the possibilities.
The reason for my "destroying the old" and "forming the new" is the
possibility of someone doing proc_task_readdir() when the group leader
does exec(), which causes all to die, and then the new process does
pthread_create(), forming a new thread group.  Because proc_task_readdir()
neither holds a lock nor stays in an RCU read-side critical section
for the full /proc scan, the old group might really be destroyed from
the reader's point of view.

That said, I freely admit that I am not very familiar with this code.


Yep!  Same proc_task_readdir() situation as before.  The group leader
cannot go away because proc_task_readdir() takes a reference.


OK, good to know -- that does make things simpler.


Agreed.  One possible difference is that in #1, no one is going to
complain about the reader quitting, while in this case someone might
well be annoyed if the list of threads is incomplete.


Seems reasonable.


Fair enough.  Again, my goal was to ensure that I had covered all the
cases as opposed to ensuring that I had described them minimally.


OK, so maybe "it is OK for readers to stop scanning" is a better way
of putting it?


Does Oleg's checking for the group leader still being alive look correct
to you?

							Thanx, Paul
--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
while_each_thread() under rcu_read_lock() is broken?, Oleg Nesterov, (Fri Jun 18, 12:34 pm)
Re: [PATCH] fix the racy check_hung_uninterruptible_tasks( ..., Frederic Weisbecker, (Fri Jun 18, 1:11 pm)
Re: [PATCH] fix the racy check_hung_uninterruptible_tasks( ..., Mandeep Singh Baines, (Fri Jun 18, 1:38 pm)
Re: while_each_thread() under rcu_read_lock() is broken?, Roland McGrath, (Fri Jun 18, 2:08 pm)
Re: while_each_thread() under rcu_read_lock() is broken?, Paul E. McKenney, (Fri Jun 18, 3:33 pm)
Re: while_each_thread() under rcu_read_lock() is broken?, Oleg Nesterov, (Fri Jun 18, 3:37 pm)
Re: while_each_thread() under rcu_read_lock() is broken?, Mandeep Baines, (Fri Jun 18, 10:00 pm)
Re: while_each_thread() under rcu_read_lock() is broken?, Frederic Weisbecker, (Fri Jun 18, 10:35 pm)
Re: while_each_thread() under rcu_read_lock() is broken?, Mandeep Baines, (Sat Jun 19, 8:44 am)
Re: while_each_thread() under rcu_read_lock() is broken?, Oleg Nesterov, (Sat Jun 19, 12:19 pm)
Re: while_each_thread() under rcu_read_lock() is broken?, Oleg Nesterov, (Mon Jun 21, 10:09 am)
Re: while_each_thread() under rcu_read_lock() is broken?, Oleg Nesterov, (Mon Jun 21, 10:44 am)
Re: while_each_thread() under rcu_read_lock() is broken?, Oleg Nesterov, (Mon Jun 21, 11:00 am)
Re: while_each_thread() under rcu_read_lock() is broken?, Roland McGrath, (Mon Jun 21, 12:02 pm)
Re: while_each_thread() under rcu_read_lock() is broken?, Oleg Nesterov, (Mon Jun 21, 1:06 pm)
Re: while_each_thread() under rcu_read_lock() is broken?, Paul E. McKenney, (Mon Jun 21, 1:51 pm)
Re: while_each_thread() under rcu_read_lock() is broken?, Eric W. Biederman, (Mon Jun 21, 2:19 pm)
Re: while_each_thread() under rcu_read_lock() is broken?, Eric W. Biederman, (Mon Jun 21, 2:22 pm)
Re: while_each_thread() under rcu_read_lock() is broken?, Paul E. McKenney, (Mon Jun 21, 2:38 pm)
Re: while_each_thread() under rcu_read_lock() is broken?, Oleg Nesterov, (Tue Jun 22, 7:34 am)
Re: while_each_thread() under rcu_read_lock() is broken?, Oleg Nesterov, (Tue Jun 22, 2:23 pm)
Re: while_each_thread() under rcu_read_lock() is broken?, Paul E. McKenney, (Tue Jun 22, 3:12 pm)
Re: while_each_thread() under rcu_read_lock() is broken?, Oleg Nesterov, (Wed Jun 23, 8:24 am)
Re: while_each_thread() under rcu_read_lock() is broken?, Paul E. McKenney, (Thu Jun 24, 11:07 am)
Re: while_each_thread() under rcu_read_lock() is broken?, Chris Friesen, (Thu Jun 24, 11:50 am)
Re: while_each_thread() under rcu_read_lock() is broken?, Roland McGrath, (Thu Jun 24, 2:14 pm)
Re: while_each_thread() under rcu_read_lock() is broken?, Oleg Nesterov, (Thu Jun 24, 2:57 pm)
Re: while_each_thread() under rcu_read_lock() is broken?, Oleg Nesterov, (Thu Jun 24, 3:00 pm)
Re: while_each_thread() under rcu_read_lock() is broken?, Eric W. Biederman, (Thu Jun 24, 5:08 pm)
Re: while_each_thread() under rcu_read_lock() is broken?, Paul E. McKenney, (Thu Jun 24, 8:37 pm)
Re: while_each_thread() under rcu_read_lock() is broken?, Paul E. McKenney, (Thu Jun 24, 8:41 pm)
Re: while_each_thread() under rcu_read_lock() is broken?, Paul E. McKenney, (Thu Jun 24, 8:42 pm)
Re: while_each_thread() under rcu_read_lock() is broken?, Oleg Nesterov, (Fri Jun 25, 2:55 am)
Re: while_each_thread() under rcu_read_lock() is broken?, Oleg Nesterov, (Fri Jun 25, 3:08 am)
Re: while_each_thread() under rcu_read_lock() is broken?, Paul E. McKenney, (Mon Jun 28, 4:43 pm)
Re: while_each_thread() under rcu_read_lock() is broken?, Oleg Nesterov, (Tue Jun 29, 6:05 am)
Re: while_each_thread() under rcu_read_lock() is broken?, Paul E. McKenney, (Tue Jun 29, 8:34 am)
Re: while_each_thread() under rcu_read_lock() is broken?, Oleg Nesterov, (Tue Jun 29, 10:54 am)
Re: while_each_thread() under rcu_read_lock() is broken?, Roland McGrath, (Thu Jul 8, 4:59 pm)
Re: while_each_thread() under rcu_read_lock() is broken?, Roland McGrath, (Thu Jul 8, 5:41 pm)
Re: while_each_thread() under rcu_read_lock() is broken?, Paul E. McKenney, (Thu Jul 8, 5:41 pm)
Re: while_each_thread() under rcu_read_lock() is broken?, Roland McGrath, (Thu Jul 8, 5:52 pm)
Re: while_each_thread() under rcu_read_lock() is broken?, Roland McGrath, (Thu Jul 8, 6:01 pm)
Re: while_each_thread() under rcu_read_lock() is broken?, Paul E. McKenney, (Fri Jul 9, 9:18 am)