lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Sat, 21 May 2016 13:07:37 +0900 From: Tetsuo Handa <penguin-kernel@...ove.SAKURA.ne.jp> To: Oleg Nesterov <oleg@...hat.com> Cc: Andrew Morton <akpm@...ux-foundation.org>, Andrea Arcangeli <aarcange@...hat.com>, Mel Gorman <mgorman@...hsingularity.net>, Michal Hocko <mhocko@...nel.org>, linux-kernel@...r.kernel.org, linux-mm@...ck.org Subject: Re: zone_reclaimable() leads to livelock in __alloc_pages_slowpath() On 2016/05/21 5:28, Oleg Nesterov wrote: > Hello, > > Recently I hit the problem, _sometimes_ the system just hangs in OOM situation. > Surprisingly, this time OOM-killer is innocent ;) and finally I can reproduce > this more-or-less reliably just running > > #include <stdlib.h> > #include <string.h> > > int main(void) > { > for (;;) { > void *p = malloc(1024 * 1024); > memset(p, 0, 1024 * 1024); > } > } > > in a loop on the otherwise idle system. 512m RAM, one CPU (but CONFIG_SMP=y), > no swap, and only one user-space process (apart from test-case above), /bin/sh > runnning as init with pid==1. I am attaching my .config just in case, but I > think the problem is not really specific to this configuration. > > -------------------------------------------------------------------------------- > It spins in __alloc_pages_slowpath() forever, __alloc_pages_may_oom() is never > called, it doesn't react to SIGKILL, etc. > > This is because zone_reclaimable() is always true in shrink_zones(), and the > problem goes away if I comment out this code > > if (global_reclaim(sc) && > !reclaimable && zone_reclaimable(zone)) > reclaimable = true; > > in shrink_zones() which otherwise returns this "true" every time, and thus > __alloc_pages_slowpath() always sees did_some_progress != 0. > Michal Hocko's OOM detection rework patchset that removes that code was sent to Linus 4 hours ago. ( https://marc.info/?l=linux-mm-commits&m=146378862415399 ) Please wait for a few days and try reproducing using linux.git .
Powered by blists - more mailing lists