kmemleak and SLAB

October 04th, 2011 - 02:40 am ET by Sitsofe Wheeler | Report spam
Hi,

When I try to use kmemleak with the SLAB allocator set I receive this
message when booting 3.1-rc8:

[ 28.480569] kmemleak: Cannot allocate a kmemleak_object structure
[ 28.480593] kmemleak: Kernel memory leak detector disabled
[ 34.428037] CPA self-test:
[ 34.435881] 4k 259968 large 0 gb 0 x 259968[b0000000-ef77f000] miss 0
[ 34.447669] 4k 259968 large 0 gb 0 x 259968[b0000000-ef77f000] miss 0
[ 34.458402] 4k 259968 large 0 gb 0 x 259968[b0000000-ef77f000] miss 0
[ 34.458407] ok.
[ 38.754032] wlan0: no IPv6 routers present
[ 67.666048] kmemleak: Automatic memory scanning thread ended

All is fine when using SLUB. On another run I also got an error about an
ODEBUG oom so I wonder if this is indicative of another problem...

Sitsofe | http://sucs.org/~sits/
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
email Follow the discussionReplies 1 replyReplies Make a reply

Replies

#1 Catalin Marinas
October 04th, 2011 - 11:50 am ET | Report spam
On 4 October 2011 07:31, Sitsofe Wheeler wrote:
When I try to use kmemleak with the SLAB allocator set I receive this
message when booting 3.1-rc8:

[   28.480569] kmemleak: Cannot allocate a kmemleak_object structure
[   28.480593] kmemleak: Kernel memory leak detector disabled
[   34.428037] CPA self-test:
[   34.435881]  4k 259968 large 0 gb 0 x 259968[b0000000-ef77f000] miss 0
[   34.447669]  4k 259968 large 0 gb 0 x 259968[b0000000-ef77f000] miss 0
[   34.458402]  4k 259968 large 0 gb 0 x 259968[b0000000-ef77f000] miss 0
[   34.458407] ok.
[   38.754032] wlan0: no IPv6 routers present
[   67.666048] kmemleak: Automatic memory scanning thread ended

All is fine when using SLUB. On another run I also got an error about an
ODEBUG oom so I wonder if this is indicative of another problem...



There could be another problem. The kmemleak error says that it could
not allocate the memory required for its internal data keeping. This
happens especially when the allocation is GFP_ATOMIC (it depends on
the context kmemleak is called from).

I have this commit in my tree (not yet pushed upstream):

http://linux-arm.org/git?p=linux-2....697d52924f

If you apply this, kmemleak keeps its metadata for later reporting
(well, only if it was fully initialised before the error occured).
This way you can inspect /proc/slabinfo and /proc/meminfo etc. to see
why it ran out of memory.

Catalin
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

Similar topics