Thread (53 messages) read the whole thread 53 messages, 6 authors, 2018-08-09

Re: WARNING in try_charge

From: Dmitry Vyukov <dvyukov@google.com>
Date: 2018-08-06 10:39:34
Also in: linux-mm, lkml

On Mon, Aug 6, 2018 at 11:48 AM, Michal Hocko [off-list ref] wrote:
On Mon 06-08-18 11:30:37, Dmitry Vyukov wrote:
quoted
On Mon, Aug 6, 2018 at 11:15 AM, Michal Hocko [off-list ref] wrote:
[...]
quoted
quoted
More interesting stuff is higher in the kernel log
: [  366.435015] oom-kill:constraint=CONSTRAINT_MEMCG,nodemask=(null),cpuset=/,mems_allowed=0,oom_memcg=/ile0,task_memcg=/ile0,task=syz-executor3,pid=23766,uid=0
: [  366.449416] memory: usage 112kB, limit 0kB, failcnt 1605

Are you sure you want to have hard limit set to 0?
syzkaller really does not mind to have it.
So what do you use it for? What do you actually test by this setting?

[...]
quoted
quoted
diff --git a/mm/memcontrol.c b/mm/memcontrol.c
index 4603ad75c9a9..852cd3dbdcd9 100644
--- a/mm/memcontrol.c
+++ b/mm/memcontrol.c
@@ -1388,6 +1388,8 @@ static bool mem_cgroup_out_of_memory(struct mem_cgroup *memcg, gfp_t gfp_mask,
        bool ret;

        mutex_lock(&oom_lock);
+       pr_info("task=%s pid=%d invoked memcg oom killer. oom_victim=%d\n",
+                       current->comm, current->pid, tsk_is_oom_victim(current));
        ret = out_of_memory(&oc);
        mutex_unlock(&oom_lock);
        return ret;
Anyway your memcg setup is indeed misconfigured. Memcg with 0 hard limit
and basically no memory charged by existing tasks is not going to fly
and the warning is exactly to call that out.

Please-please-please do not mix kernel bugs and notices to user into
the same bucket:
Well, WARN_ON used to be a standard way to make user aware of a
misbehavior. In this case it warns about a pottential runaway when memcg
is misconfigured. I do not insist on using WARN_ON here of course. If
there is a general agreement that such a condition is better handled by
pr_err then I am fine with it. Users tend to be more sensitive on
WARN_ONs though.

Btw. running with the above diff on top might help us to ideantify
whether this is a pre-mature warning or a valid one. Still useful to
find out.
The bug report has a reproducer, so you can run it with the patch. Or
ask syzbot to test your patch:
https://github.com/google/syzkaller/blob/master/docs/syzbot.md#testing-patches
Which basically boils down to saying:

#syz test: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
master

Note that a text patch without a base tree/commit can be useless, I
used torvalds/linux.git but I don't know if it will apply there or
not. Let's see.

Attachments

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help