Re: kmemleak: Early log buffer exceeded

From: Catalin Marinas
Date: Wed Jun 24 2009 - 05:36:21 EST


On Tue, 2009-06-23 at 22:26 +0100, Sergey Senozhatsky wrote:
> I can see on my both machines
>
> [ 0.000135] kmemleak: Early log buffer exceeded
[...]
> 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)?

It seems that in your case it isn't. It is fine on the machines I tested
it on but choosing this figure wasn't too scientific.

I initially had it bigger and marked with the __init attribute to free
it after initialisation but this was causing (harmless) section mismatch
warnings.

What kind of hardware do you have?

> 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?

I recall allocating this dynamically didn't work properly but I'll give
it another try. Otherwise, I can make it configurable and print a better
message (probably without the stack dump).

--
Catalin

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