Re: 2.6.22-stable causes oomkiller to be invoked

From: Andrew Morton
Date: Sat Dec 15 2007 - 01:01:46 EST


On Sat, 15 Dec 2007 09:22:00 +0530 Dhaval Giani <dhaval@xxxxxxxxxxxxxxxxxx> wrote:

> > Is it really the case that the bug only turns up when you run tests like
> >
> > while echo; do cat /sys/kernel/kexec_crash_loaded; done
> > and
> > while echo; do cat /sys/kernel/uevent_seqnum ; done;
> >
> > or will any fork-intensive workload also do it? Say,
> >
> > while echo ; do true ; done
> >
>
> This does not leak, but having a simple text file and reading it in a
> loop causes it.

hm.

> > ?
> >
> > Another interesting factoid here is that after the oomkilling you slabinfo has
> >
> > mm_struct 38 98 584 7 1 : tunables 32 16 8 : slabdata 14 14 0 : globalstat 2781 196 49 31 0 1 0 0 0 : cpustat 368800 11864 368920 11721
> >
> > so we aren't leaking mm_structs. In fact we aren't leaking anything from
> > slab. But we are leaking pgds.
> >
> > iirc the most recent change we've made in the pgd_t area is the quicklist
> > management which went into 2.6.22-rc1. You say the bug was present in
> > 2.6.22. Can you test 2.6.21?
>
> Nope, leak is not present in 2.6.21.7

Could you try this debug patch please?

It might need some fiddling to get useful output. Basic idea is to see if
we are failing to empty the quicklists.

--- a/include/linux/quicklist.h~a
+++ a/include/linux/quicklist.h
@@ -69,6 +69,8 @@ static inline void __quicklist_free(int
*(void **)p = q->page;
q->page = p;
q->nr_pages++;
+ if (q->nr_pages && !(q->nr_pages % 1000))
+ printk("eek: %d\n", q->nr_pages);
put_cpu_var(quicklist);
}

_

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/