lkml.org 
[lkml]   [2010]   [Jun]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
SubjectRe: Probable Bug (or configuration error) in kmemleak
From
Date
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@atheros.com> 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



\
 
 \ /
  Last update: 2010-06-18 15:07    [W:0.099 / U:1.160 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site