Coldfire 5271 hitting BUG_ON(page_count(buddy) != 0);

From: Lennart Sorensen
Date: Thu Jun 25 2009 - 11:43:52 EST


I am hitting a memory management bug and I would love some hints as to
how to track down the bug and fix it.

The bug hit is line 423 of page_alloc.c which is:

BUG_ON(page_count(buddy) != 0);

The function it is part of is:

static inline int page_is_buddy(struct page *page, struct page *buddy,
int order)
{
if (!pfn_valid_within(page_to_pfn(buddy)))
return 0;

if (page_zone_id(page) != page_zone_id(buddy))
return 0;

if (PageBuddy(buddy) && page_order(buddy) == order) {
BUG_ON(page_count(buddy) != 0);
return 1;
}
return 0;
}

I am seeing this both with 2.6.29.1 and 2.6.30 so far. I unfortunately
haven't poked much at the memory management code, so I am not even sure
what this is supposed to be doing. The cpu us a coldfire 5271.

I also see crashes causing the kernel to dump lots of hex values.
Building the kernel with debug enabled unfortunately seems to move things
around enough to make it just lock up instead without any output.

--
Len Sorensen
--
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/