diff mbox series

syzbot: Dump all threads upon OOM.

Message ID 1536319423-9344-1-git-send-email-penguin-kernel@I-love.SAKURA.ne.jp (mailing list archive)
State New, archived
Headers show
Series syzbot: Dump all threads upon OOM. | expand

Commit Message

Tetsuo Handa Sept. 7, 2018, 11:23 a.m. UTC
syzbot is getting stalls with linux-next kernels because dump_tasks() from
out_of_memory() is printing 6600 tasks. Most of these tasks are syzbot
processes but syzbot is supposed not to create so many processes.
Therefore, let's start from checking what these tasks are doing.
This change will be removed after the bug is fixed.

Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Cc: Dmitry Vyukov <dvyukov@google.com>
Cc: Michal Hocko <mhocko@kernel.org>
---
 mm/oom_kill.c | 5 +++++
 1 file changed, 5 insertions(+)

Comments

Dmitry Vyukov Sept. 7, 2018, 12:57 p.m. UTC | #1
On Fri, Sep 7, 2018 at 1:23 PM, Tetsuo Handa
<penguin-kernel@i-love.sakura.ne.jp> wrote:
> syzbot is getting stalls with linux-next kernels because dump_tasks() from
> out_of_memory() is printing 6600 tasks. Most of these tasks are syzbot
> processes but syzbot is supposed not to create so many processes.
> Therefore, let's start from checking what these tasks are doing.
> This change will be removed after the bug is fixed.
>
> Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
> Cc: Dmitry Vyukov <dvyukov@google.com>
> Cc: Michal Hocko <mhocko@kernel.org>
> ---
>  mm/oom_kill.c | 5 +++++
>  1 file changed, 5 insertions(+)
>
> diff --git a/mm/oom_kill.c b/mm/oom_kill.c
> index f10aa53..867fd6a 100644
> --- a/mm/oom_kill.c
> +++ b/mm/oom_kill.c
> @@ -41,6 +41,7 @@
>  #include <linux/kthread.h>
>  #include <linux/init.h>
>  #include <linux/mmu_notifier.h>
> +#include <linux/sched/debug.h>
>
>  #include <asm/tlb.h>
>  #include "internal.h"
> @@ -446,6 +447,10 @@ static void dump_header(struct oom_control *oc, struct task_struct *p)
>                 if (is_dump_unreclaim_slabs())
>                         dump_unreclaimable_slab();
>         }
> +#ifdef CONFIG_DEBUG_AID_FOR_SYZBOT
> +       show_state();
> +       panic("Out of memory");

won't this panic on every oom?
we have lots of oom's, especially inside of cgroups, but probably global too
it would be bad if we crash all machines this way


> +#endif
>         if (sysctl_oom_dump_tasks)
>                 dump_tasks(oc->memcg, oc->nodemask);
>  }
> --
> 1.8.3.1
>
diff mbox series

Patch

diff --git a/mm/oom_kill.c b/mm/oom_kill.c
index f10aa53..867fd6a 100644
--- a/mm/oom_kill.c
+++ b/mm/oom_kill.c
@@ -41,6 +41,7 @@ 
 #include <linux/kthread.h>
 #include <linux/init.h>
 #include <linux/mmu_notifier.h>
+#include <linux/sched/debug.h>
 
 #include <asm/tlb.h>
 #include "internal.h"
@@ -446,6 +447,10 @@  static void dump_header(struct oom_control *oc, struct task_struct *p)
 		if (is_dump_unreclaim_slabs())
 			dump_unreclaimable_slab();
 	}
+#ifdef CONFIG_DEBUG_AID_FOR_SYZBOT
+	show_state();
+	panic("Out of memory");
+#endif
 	if (sysctl_oom_dump_tasks)
 		dump_tasks(oc->memcg, oc->nodemask);
 }