kmemleak: Early log buffer exceeded

From: Sergey Senozhatsky
Date: Tue Jun 23 2009 - 18:25:36 EST


Hello.
I can see on my both machines

[ 0.000135] kmemleak: Early log buffer exceeded
[ 0.000140] Pid: 0, comm: swapper Not tainted 2.6.30-dbginfo-nv-git19 #7
[ 0.000144] Call Trace:
[ 0.000153] [<c1418ecc>] ? printk+0x23/0x36
[ 0.000160] [<c10f7c12>] log_early+0xf2/0x110
[ 0.000165] [<c10f8788>] kmemleak_alloc+0x1f8/0x2c0
[ 0.000171] [<c10f28fb>] ? cache_alloc_debugcheck_after+0xeb/0x1e0
[ 0.000176] [<c10f496a>] ? __kmalloc+0xfa/0x240
[ 0.000182] [<c10761fc>] ? trace_hardirqs_on_caller+0x14c/0x1a0
[ 0.000187] [<c10f4a15>] __kmalloc+0x1a5/0x240
[ 0.000192] [<c10f4d8d>] ? alloc_arraycache+0x2d/0x80
[ 0.000198] [<c10f4d8d>] alloc_arraycache+0x2d/0x80
[ 0.000203] [<c10f4e7c>] do_tune_cpucache+0x9c/0x3a0
[ 0.000208] [<c10f5322>] enable_cpucache+0x42/0x110
[ 0.000215] [<c15ff7c4>] kmem_cache_init_late+0x32/0x82
[ 0.000221] [<c15e2995>] start_kernel+0x24c/0x366
[ 0.000226] [<c15e2517>] ? unknown_bootoption+0x0/0x1dd
[ 0.000231] [<c15e2088>] __init_begin+0x88/0xa1

mm/kmemleak.c
static struct early_log early_log[200];

static void log_early(int op_type, const void *ptr, size_t size,
int min_count, unsigned long offset, size_t length)
{
...
if (crt_early_log >= ARRAY_SIZE(early_log)) {
print Early log buffer exceeded;
call dump_stack, etc.

So, my questions are:
1. Is 200 really enough? Why 200 not 512, 1024 (for example)?
//If this has been already discussed - please point me.

2. When (crt_early_log >= ARRAY_SIZE(early_log)) == 1 we just can see stack.
Since we have "full" early_log maybe it'll be helpfull to see it?
//For example like at void __init kmemleak_init(void)

Sergey
--
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/