lkml.org 
[lkml]   [2008]   [Apr]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectRe: [bug] SLUB + mm/slab.c boot crash in -rc9

    you asked me to run with the debug patch attached below. I just tried
    vanilla -rc9 (head 120dd64cacd4fb7) and it still crashes with this
    config:

    http://redhat.com/~mingo/misc/config-Thu_Apr_10_10_41_16_CEST_2008.bad.rc9

    debug output is:

    http://redhat.com/~mingo/misc/log-Thu_Apr_10_10_41_16_CEST_2008.bad.rc9

    so it's probably the first few page allocations (setup_cpu_cache())
    going wrong already - suggesting a some fundamental borkage in SLAB?

    note, when i change SLAB to SLUB (and keep the config unchanged
    otherwise), i get a similar early crash:

    http://redhat.com/~mingo/misc/log-Tue_Apr_15_07_24_59_CEST_2008.bad
    http://redhat.com/~mingo/misc/config-Tue_Apr_15_07_24_59_CEST_2008.bad

    i've also uploaded a bzImage (SLUB, debug patch not applied) that you
    can pick up and run on any 32-bit test-system:

    http://redhat.com/~mingo/misc/bzImage-Thu_Apr_10_10_41_16_CEST_2008.bad.rc9

    it's a relatively generic bzImage that should boot on most whitebox PCs
    on most distros as long as you use a pure ext3 setup and might even give
    you networking (no modules or initrd is needed). It boots fine on two
    other 32-bit PCs i have (an Intel laptop and an AMD desktop).

    Ingo

    Index: linux/mm/page_alloc.c
    ===================================================================
    --- linux.orig/mm/page_alloc.c
    +++ linux/mm/page_alloc.c
    @@ -1485,6 +1485,7 @@ restart:
    * Happens if we have an empty zonelist as a result of
    * GFP_THISNODE being used on a memoryless node
    */
    + WARN_ON(1);
    return NULL;
    }

    Index: linux/mm/slab.c
    ===================================================================
    --- linux.orig/mm/slab.c
    +++ linux/mm/slab.c
    @@ -1682,6 +1682,7 @@ static void *kmem_getpages(struct kmem_c
    flags |= __GFP_RECLAIMABLE;

    page = alloc_pages_node(nodeid, flags, cachep->gfporder);
    + WARN_ON(!page);
    if (!page)
    return NULL;

    @@ -2620,6 +2621,7 @@ static struct slab *alloc_slabmgmt(struc
    /* Slab management obj is off-slab. */
    slabp = kmem_cache_alloc_node(cachep->slabp_cache,
    local_flags & ~GFP_THISNODE, nodeid);
    + WARN_ON(!slabp);
    if (!slabp)
    return NULL;
    } else {

    \
     
     \ /
      Last update: 2008-04-15 08:29    [W:4.514 / U:0.148 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site