Re: Gigantic memory leak in linux-2.6.[789]!

From: Richard B. Johnson
Date: Fri Oct 22 2004 - 11:13:46 EST


On Fri, 22 Oct 2004, [ISO-8859-15] Kristian Sørensen wrote:

Richard B. Johnson wrote:
On Fri, 22 Oct 2004, Kasper Sandberg wrote:

On Fri, 2004-10-22 at 16:13 +0200, Kristian Sørensen wrote:

Hi all!

After some more testing after the previous post of the OOPS in
generic_delete_inode, we have now found a gigantic memory leak in Linux 2.6.
[789]. The scenario is the same:

File system: EXT3
Unpack and delete linux-2.6.8.1.tar.bz2 with this Bash while loop:

let "i = 0"
while [ "$i" -lt 10 ]; do
tar jxf linux-2.6.8.1.tar.bz2;
rm -fr linux-2.6.8.1;
let "i = i + 1"
done

When the loop has completed, the system use 124 MB memory more _each_ time....
so it is pretty easy to make a denial-of-service attack :-(



Do something like this with your favorite kernel version.....

while true ; do tar -xzf linux-2.6.9.tar.gz ; rm -rf linux-2.6.9 ; vmstat ; done

You can watch this for as long as you want. If there is no other
activity, the values reported by vmstat remain, on the average, stable.
If you throw in a `sync` command, the values rapidly converge to
little memory usage as the disk-data gets flused to disk.
The problem is, that the free memory reported by vmstat is decresing by 124mb for each 10-iterations....

The allocated memory does not get freed even if the system has been left alone for three hours!


Yes. So? Why would it be freed? It's left how it was until it
is needed. Freeing it would waste CPU cycles.

This cannot be a problem unless you are inventing some sort
of hot-swap memory thing. If so, you need to make a module that
tells the kernel memory manager to free everything so you
can remove and replace the RAM.



Cheers, Kristian.



--
Kristian Sørensen
- The Umbrella Project
http://umbrella.sourceforge.net

E-mail: ipqw@xxxxxxxxxxxx, Phone: +45 29723816


Cheers,
Dick Johnson
Penguin : Linux version 2.6.9 on an i686 machine (5537.79 GrumpyMips).
98.36% of all statistics are fiction.