Re: [PATCH 2.6.18-rc4 00/10] Kernel memory leak detector 0.9
From: Catalin Marinas
Date: Tue Aug 15 2006 - 11:23:06 EST
On 14/08/06, Catalin Marinas <catalin.marinas@xxxxxxxxx> wrote:
The kmemleak+slab locking is a bit complicated because memleak itself
needs to allocate memory and avoid recursive calls to it (the
pointer_cache and the radix_tree allocations). The kmemleak-related
allocations are not tracked by kmemleak.
I see the following solutions:
1. acquire the memleak_lock at the beginning of an alloc/free function
and release it when finished while allowing recursive/nested calls
(and only call the memleak_* functions during the outermost lock).
This would mean ignoring the off-slab management allocations as these
would lead to deadlock because of the recursive call into kmemleak.
This locking should be placed around cache_reap() as well (actually,
around all the entry points in the mm/slab.c file).
This would actually work because the slab allocation functions may sleep.
The simple solution would be to eliminate the memory allocations when
memleak_lock is held, maybe by replacing the radix tree with a prio
search tree (not sure what the performance impact will be). I'll try
to go this route and see how it works.
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/