> From:
>
> Dave Anderson <anderson@redhat.com>

>
 ...

> But your kernel shows cache_cache.buffer_size set to zero -- and the
> ASSIGN_SIZE(kmem_cache_s) above dutifully downsized the data structure
> size from 204 to zero.  Later on, that size was used to allocate a
> kmem_cache buffer, which failed when a GETBUF() was called with a zero-size.
>  
> I guess a check could be made above for a zero cache_cache.buffer_size,
> but why would that ever be?
>
> Try this:
>
>   # crash --no_kmem_cache vmlinux vmcore
>
> which will allow you to get past the kmem_cache initialization.
>
> Then enter:
>
>   crash> p cache_cache
>
> Does the "buffer_size" member really show zero?

  Yes it seems so!
initialize_task_state: using old defaults
<readmem: 8067a300, KVADDR, "fill_task_struct", 868, (ROE), 86e3f78>
    addr: 8067a300  paddr: 67a300  cnt: 868
  STATE: TASK_RUNNING (PANIC)

crash> p cache_cache
cache_cache = GETBUF(128 -> 0)
<readmem: 8067f1c0, KVADDR, "gdb_readmem_callback", 204, (ROE), 8ac00d8>
    addr: 8067f1c0  paddr: 67f1c0  cnt: 204
$3 = {
  array = {0x0, 0x8067f1c4, 0x8067f1c4, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf7813e00, 0xf7849400, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
  batchcount = 0,
  limit = 0,
  shared = 0,
  buffer_size = 0,
  reciprocal_buffer_size = 0,
  flags = 0,
  num = 0,
  gfporder = 0,
  gfpflags = 60,
  colour = 120,
  colour_off = 8,
  slabp_cache = 0x100,
  slab_size = 16777216,
  dflags = 0,
  ctor = 0xf,
  name = 0x0,
  next = {
    next = 0x0,
    prev = 0x2
  },
  nodelists = {0x40}
}
FREEBUF(0)

>
> BTW, you can work around the problem by commenting out the call
> to kmem_cache_downsize() in vm_init().  


  This workaround works ok.  

(And if you're using
> makedumpfile with excluded pages, hope that the problem I described
> above doesn't occur...)
>

  We are not excluding files so this is not a big issue. Also
  the --no_kmem_cache lets me open dump and let me do quite many things already.
 

 - Ville