[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CABAubTh_5aLxaEYYyFivoatJLN35K8Gy1fHKG=8FL8XFrv61Sw@mail.gmail.com>
Date: Thu, 14 Jul 2016 08:35:25 -0700
From: Shayan Pooya <shayan@...eve.org>
To: Oleg Nesterov <oleg@...hat.com>
Cc: Konstantin Khlebnikov <khlebnikov@...dex-team.ru>,
Michal Hocko <mhocko@...nel.org>,
Konstantin Khlebnikov <koct9i@...il.com>,
cgroups mailinglist <cgroups@...r.kernel.org>,
LKML <linux-kernel@...r.kernel.org>, linux-mm@...ck.org
Subject: Re: bug in memcg oom-killer results in a hung syscall in another
process in the same cgroup
> Well, but we can't do this. And "as expected" is actually just wrong. I still
> think that the whole FAULT_FLAG_USER logic is not right. This needs another email.
I meant as expected from the content of the patch :) I think
Konstantin agrees that this patch cannot be merged upstream.
> fork() should not fail because there is a memory hog in the same memcg. Worse,
> pthread_create() can kill the caller by the same reason. And we have the same
> or even worse problem with ->clear_child_tid, pthread_join() can hang forever.
> Unlikely we want to kill the application in this case ;)
>
> And in fact I think that the problem has nothing to do with set/claer_child_tid
> in particular.
>
> I am just curious... can you reproduce the problem reliably? If yes, can you try
> the patch below ? Just in case, this is not the real fix in any case...
Yes. It deterministically results in hung processes in vanilla kernel.
I'll try this patch.
> --- x/kernel/sched/core.c
> +++ x/kernel/sched/core.c
> @@ -2793,8 +2793,11 @@ asmlinkage __visible void schedule_tail(struct task_struct *prev)
> balance_callback(rq);
> preempt_enable();
>
> - if (current->set_child_tid)
> + if (current->set_child_tid) {
> + mem_cgroup_oom_enable();
> put_user(task_pid_vnr(current), current->set_child_tid);
> + mem_cgroup_oom_disable();
> + }
> }
>
> /*
>
Powered by blists - more mailing lists