[prev in list] [next in list] [prev in thread] [next in thread] 

List:       uclinux-dev
Subject:    [uClinux-dev]
From:       lsorense () csclub ! uwaterloo ! ca (Lennart Sorensen)
Date:       2009-06-25 15:43:43
Message-ID: 20090625154343.GA10189 () csclub ! uwaterloo ! ca
[Download RAW message or body]

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
_______________________________________________
uClinux-dev mailing list
uClinux-dev@uclinux.org
http://mailman.uclinux.org/mailman/listinfo/uclinux-dev
This message was resent by uclinux-dev@uclinux.org
To unsubscribe see:
http://mailman.uclinux.org/mailman/options/uclinux-dev
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic