[Crash-utility] vt->kmem_cache_len_nodes not set
Dave Anderson
anderson at redhat.com
Thu Jan 26 13:54:18 UTC 2012
----- Original Message -----
> Hello Dave,
>
> I have a s390x dump of a Linux-3.1 kernel where I get the error
> message:
>
> crash: zero-size memory allocation! (called from 8009f504)
>
> The error comes from max_cpudata_limit() where GETBUF fails:
>
> /*
> * Check the shared list of all the nodes.
> */
> start_address = (ulong *)GETBUF(sizeof(ulong) *
> vt->kmem_cache_len_nodes);
>
> --> vt->kmem_cache_len_nodes = 0
>
> I debugged the problem a bit and found out that the reason is
> that crash does not set vt->kmem_cache_len_nodes for that dump.
> This attribute seem to be only set in kmem_cache_downsize():
>
> if (buffer_size < SIZE(kmem_cache_s)) {
> if (kernel_symbol_exists("nr_node_ids")) {
> get_symbol_data("nr_node_ids", sizeof(int),
> &nr_node_ids);
> vt->kmem_cache_len_nodes = nr_node_ids;
> } else {
> fprintf(fp, "XXX kernel_symbol_exists(\n");
> vt->kmem_cache_len_nodes = 1;
> }
>
> In my dump the "if" condition returns false (buffer_size = 768,
> SIZE(kmem_cache_s = 624) therefore vt->kmem_cache_len_nodes is
> not set. Perhaps the content of "cache_cache" is useful to understand
> what is going on:
>
> print cache_cache
> $7 = {
> batchcount = 27,
> limit = 54,
> shared = 8,
> buffer_size = 768, <<-----
> reciprocal_buffer_size = 5592406,
> flags = 0,
> num = 5,
> gfporder = 0,
> gfpflags = 0,
> colour = 0,
> colour_off = 256,
> slabp_cache = 0x0,
> slab_size = 256,
> dflags = 0,
> ctor = 0,
> name = 0x667b8e "kmem_cache",
> next = {
> next = 0x93b528,
> prev = 0xff04158
> },
> nodelists = 0x93b538,
> array = {0xff23e00, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
> 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
> 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
> 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x
> 0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
> 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
> 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}
> }
>
> Any idea what's wrong here?
>
> Best Regards
>
> Michael
Bob does:
[Crash-utility] "zero-size memory allocation!" is back for Linux 3.1
https://www.redhat.com/archives/crash-utility/2012-January/msg00086.html
He's working on a patch...
You can use the "crash --no_kmem_cache ..." command line option to get around it.
Dave
More information about the Crash-utility
mailing list