lkml.org 
[lkml]   [1997]   [Jan]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: Memory allocation errors
On Tue, 28 Jan 1997, Mark Hemment wrote:

>
> Richard B. Johnson wrote:
> > From info received here, I decided to make my own check of a
> > possible memory allocation bug. I can confirm that the bug does,
> > indeed, exist.
>
> Not a bug!
>

Okay. Then what is the purpose of this __FEATURE___? This is defininitely
a BUG and a BUG of the worse possible kind.

> malloc() and free() are library funcs, not system calls.

Exactly what I stated in the message. I also stated that it wasn't a
kernel bug. I also stated where the BUG existed. I also suggested that
the maintainer of the C runtime library look into this.

>
> malloc() may sbrk() up the data segment to get more memory,
> but not all implementations of free() will sbrk() down. Therefore
> free()d memory will not be returned to the OS, but will stay in a
> process's address space.
> For malloc engines which use sbrk() and can return memory to the
> system, the conditions which allow this are limited.
>

Not true. This is the __FIRST__ operating system I have ever used that
refuses to do this. Even Borland returns RAM to DOS when the last
pointer is freed. I have applications running on IRMX that could not
possibly work unless memory was truly freed. It is often not possible
to set the break address down until the LAST allocation unit is freed,
however, once it is freed it is always possible.

> If you need to allocate/free a large block of memory, and have it
> returned to the system, mmap()/unmap() anonymous memory.
>

POSIX defines malloc() and free() for user-mode dynamic memory
allocation and _deallocation_.

If memory isn't freed, here's another "denial of services" ...

> > I can run the first program forever on my Sun (SunOS 5.5.1). This
> > machine, in spite of its many problems, does deallocate RAM when
> > free() is called.
>
> It is possible to write malloc()/free() to use mmap()/unmap(), maybe
> SunOS 5.5.1 does this (but then again, maybe not).
>
> Regards,
>
> markhe
>

Cheers,
Dick Johnson
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Richard B. Johnson
Project Engineer
Analogic Corporation
Voice : (508) 977-3000 ext. 3754
Fax : (508) 532-6097
Modem : (508) 977-6870
Ftp : ftp@boneserver.analogic.com
Email : rjohnson@analogic.com, johnson@analogic.com
Penguin : Linux version 2.1.23 on an i586 machine (66.15 BogoMips).
Warning : It's hard to remain at the trailing edge of technology.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-


\
 
 \ /
  Last update: 2005-03-22 13:38    [W:0.089 / U:0.184 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site