Subject: Re: next-20090202: task kmemleak:763 blocked for more than 120 seconds.

From: Catalin Marinas <[email-masked]>
Date: Mon, 02 Feb 2009 14:53:05 +0000

Alexander Beregalov <[email-masked]> wrote:
> It seems it is blocked forever.

Scanning the full memory may take a lot of time, depending on the
amount of RAM and the number of objects allocated. It is not unlikely
to take more than 120 seconds on some loaded systems. However, it
should call schedule() periodically to let other tasks run. Is your
system unresponsive during this?

> [ 1704.619898] INFO: task kmemleak:763 blocked for more than 120 seconds.
> [ 1704.697951] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs"
> disables this message.
> [ 1704.791613] kmemleak      D 0000000000000001  6008   763      2
[...]
> [ 1706.246334] no locks held by kmemleak/763.

It looks like the kmemleak thread is in the TASK_UNINTERUPTIBLE state.
This happens when it calls schedule_timeout_uninterruptible() to sleep
between scans. It probably took more than 120 to scan the memory and
hence the report.

It doesn't look like a problem, only that the watchdog thread checks
for uninterruptible tasks. I can try to make it sleep with
TASK_INTERRUPTIBLE to avoid the message.

Thanks.

-- 
Catalin