Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 16 Mar 2002 11:58:40 -0600 (CST)
From:      mark tinguely <tinguely@web.cs.ndsu.nodak.edu>
To:        rc27@cse.Buffalo.EDU, tinguely@web.cs.ndsu.nodak.edu
Cc:        freebsd-hackers@FreeBSD.ORG
Subject:   Re: Memory management bug in FreeBSD 4.5 RELEASE
Message-ID:  <200203161758.g2GHwek39309@web.cs.ndsu.nodak.edu>
In-Reply-To: <Pine.SOL.4.30.0203161241470.11361-100000@tarantula.cse.Buffalo.EDU>

next in thread | previous in thread | raw e-mail | index | archive | help

>  But why does this not happen after i = 32 ? I hardly see any increase in
>  memory usage after that.

I think you are backstoring pages that hold the allocated memory bucket
pointers, not the data itself. in the i < 32 you run out of these pages
of pointers to buckets before you hit your data size VM limit.

After 32 bits, you are allocating bigger, using fewer buckets, and
therefore few pointers to the buckets. you hit your data size VM limit
before you exceed the back store of these pointers.

you do not check the return code from you malloc, so after you
exceed your data size VM limit, your program is just spinning,
no more pages of pointers will be squeeze out to swap backstore.

dirty a byte in your malloc block to push out all of the allocated data.

--mark tinguely.

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200203161758.g2GHwek39309>