Messages in this thread | | | Date | Mon, 2 Nov 2009 13:56:40 +0900 | From | Minchan Kim <> | Subject | Re: OOM killer, page fault |
| |
On Mon, 2 Nov 2009 13:24:06 +0900 (JST) KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com> wrote:
> Hi, > > (Cc to linux-mm) > > Wow, this is very strange log. > > > Dear all, > > > > (please Cc) > > > > With 2.6.32-rc5 I got that one: > > [13832.210068] Xorg invoked oom-killer: gfp_mask=0x0, order=0, oom_adj=0 > > order = 0
I think this problem results from 'gfp_mask = 0x0'. Is it possible?
If it isn't H/W problem, Who passes gfp_mask with 0x0? It's culpit.
Could you add BUG_ON(gfp_mask == 0x0) in __alloc_pages_nodemask's head?
---
/* * This is the 'heart' of the zoned buddy allocator. */ struct page * __alloc_pages_nodemask(gfp_t gfp_mask, unsigned int order, struct zonelist *zonelist, nodemask_t *nodemask) { enum zone_type high_zoneidx = gfp_zone(gfp_mask); struct zone *preferred_zone; struct page *page; int migratetype = allocflags_to_migratetype(gfp_mask);
+ BUG_ON(gfp_mask == 0x0); gfp_mask &= gfp_allowed_mask;
lockdep_trace_alloc(gfp_mask);
might_sleep_if(gfp_mask & __GFP_WAIT);
if (should_fail_alloc_page(gfp_mask, order)) return NULL;
-- Kind regards, Minchan Kim
| |