On Fri, 2010-06-18 at 09:11 +0100, Sankar P wrote: > On Thu, Jun 17, 2010 at 11:06 PM, Luis R. Rodriguez > <lrodriguez@xxxxxxxxxxx> wrote: > > On Thu, Jun 17, 2010 at 02:21:56AM -0700, Sankar P wrote: > >> Hi, > >> > >> I wanted to detect memory leaks in one of my kernel modules. So I > >> built Linus' tree with the following config options enabled (on top > >> of make defconfig) > >> > >> CONFIG_DEBUG_KMEMLEAK=y > >> CONFIG_DEBUG_KMEMLEAK_EARLY_LOG_SIZE=400 > >> CONFIG_DEBUG_KMEMLEAK_TEST=y > >> > >> If I boot with this kernel, debugfs is automatically mounted. But I do > >> not have the file: > >> > >> /sys/kernel/debug/kmemleak > >> > >> created at all. There are other files like kprobes in the mounted > >> /sys/kernel/debug directory btw. So I am not able to detect any of the > >> memory leaks. Is there anything I am doing wrong or missing (or) is > >> this a bug in kmemleak ? > >> > >> Please let me know your suggestions to fix this and get memory leaks > >> reporting working. Thanks. > >> > >> The full .config file is also attached with this mail. Sorry for the > >> attachment, I did not want to paste 5k lines in the mail. Sorry if it > >> is wrong. > > > > > > This is odd.. Do you see this message on your kernel ring buffer? > > > > Failed to create the debugfs kmemleak file > > > > I dont see such an error in the dmesg output. But I got another > interesting error: > > [ 0.000000] kmemleak: Early log buffer exceeded, please increase > DEBUG_KMEMLEAK_EARLY_LOG_SIZE > [ 0.000000] kmemleak: Kernel memory leak detector disabled You would need to increase DEBUG_KMEMLEAK_EARLY_LOG_SIZE. The default of 400 seems ok for me but it may not work with some other kernel configurations (that's a static array for logging memory allocations before the kmemleak is fully initialised and can start tracking them). > But after that also, I see some other lines like: > > [ 0.511641] kmemleak: vmalloc(64) = f7857000 > [ 0.511645] kmemleak: vmalloc(64) = f785a000 This is because you compiler the test module into the kernel (DEBUG_KMEMLEAK_TEST). It's not kmemleak printing this but it's testing module (which leaks memory on purpose). > The variable DEBUG_KMEMLEAK_EARLY_LOG_SIZE was set to 400 by default. > I changed it to 4000 and then 40000 (may be should try < 32567 ?) but > still I get the same error message and the file > /sys/kernel/debug/kmem* is never created at all. This shouldn't usually happen with values greater than 2000. From your kernel log, the version seems to be 2.6.32. Do you have the same problems with 2.6.35-rc3? Your .config seems to refer to the 2.6.35-rc3 kernel - are you checking the right image? -- Catalin -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxxx For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>