On Tue, 8 Mar 2011 15:57:36 -0800 (PST) David Rientjes <rientjes@xxxxxxxxxx> wrote: > > > > @@ -324,7 +324,7 @@ static struct task_struct *select_bad_process(unsigned int *ppoints, > > > > * the process of exiting and releasing its resources. > > > > * Otherwise we could get an easy OOM deadlock. > > > > */ > > > > - if (thread_group_empty(p) && (p->flags & PF_EXITING) && p->mm) { > > > > + if ((p->flags & PF_EXITING) && p->mm) { > > > > The previous check was not perfect, we know this. > > > > But with this patch applied, the simple program below disables oom-killer > > completely. select_bad_process() can never succeed. > > > > The program illustrates a problem that shouldn't be fixed in > select_bad_process() but rather in oom_kill_process() when choosing an > eligible child of the selected task to kill in place of its parent. If Oleg's test program cause a hang with oom-prevent-unnecessary-oom-kills-or-kernel-panics.patch and doesn't cause a hang without oom-prevent-unnecessary-oom-kills-or-kernel-panics.patch then that's a big problem for oom-prevent-unnecessary-oom-kills-or-kernel-panics.patch, no? -- 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>