tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Limiting malloc to the low 2GB?



On Mon, Nov 28, 2022 at 21:45:40 +0000, RVP wrote:

> On Mon, 28 Nov 2022, Valery Ushakov wrote:
> 
> > Do we have a way to tell malloc on a 32-bit system to allocate memory
> > only below the 2GB boundary (on i386, including when run under amd64)?
> > I'm trying to port a(n old) program that wants to use the sign bit for
> > its internal purposes.  I guess one option would be to prevent malloc
> > from using mmap (and disable alsr?) so that only sbrk (in the low 2GB)
> > is used.
> 
> The standard jemalloc in the system has a compile-time flag to do this
> `--with-lg-vaddr=31'. No run-time setting possible from what I can see.
> Or, you could compile the program against the old `src/lib/libbsdmalloc'
> which only uses sbrk().

Turns out you can use MALLOC_CONF="dss:primary" to make (the new)
jemalloc prefer sbrk(2).

He man page documents that you can aslo use

  const char *malloc_conf = "...";

in your program, but the variable you actually have to use is
__je_malloc_conf.

There is __weak_alias(malloc_conf, __je_malloc_conf) but that doesn't
work across DSO boundaries, I guess.

-uwe


Home | Main Index | Thread Index | Old Index