On 03/14, David Rientjes wrote: > > On Mon, 14 Mar 2011, Oleg Nesterov wrote: > > > oom_kill_process() simply sets TIF_MEMDIE and returns if PF_EXITING. > > This is very wrong by many reasons. In particular, this thread can > > be the dead group leader. Check p->mm != NULL. > > > > This is true only for the oom_kill_allocating_task sysctl where it is > required in all cases to kill current; current won't be triggering the oom > killer if it's dead. > > oom_kill_process() is called with the thread selected by > select_bad_process() and that function will not return any thread if any > eligible task is found to be PF_EXITING and is not current, or any > eligible task is found to have TIF_MEMDIE. > > In other words, for this conditional to be true in oom_kill_process(), > then p must be current and so it cannot be the dead group leader as > specified in your changelog unless PF_EXITING gets set between > select_bad_process() and the oom_kill_process() call: we don't care about > that since it's in the exit path and we therefore want to give it access > to memory reserves to quickly exit anyway and the check for PF_EXITING in > select_bad_process() prevents any infinite loop of that task getting > constantly reselected if it's dead. Confused. I sent the test-case. OK, may be you meant the code in -mm, but I meant the current code. Oleg. -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxxx For more info on Linux MM, see: http://www.linux-mm.org/ . Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/ Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>