> Date: Fri, 24 Jan 2025 16:45:29 +0300 > From: Valery Ushakov <u...@stderr.spb.ru> > > That reminds me... (sorry if hijacking the thread). > > When a user-supplied malloc is used (dmalloc &c, or program's own > malloc like e.g. in inferno-os), they do not override jemalloc fork > hooks as that's not part of malloc "API contract" so to say. jemalloc > hooks are run on fork with unitialized jemalloc internals. > > What is the right corse of action here?
The right course of action is to define the symbols: _malloc_prefork _malloc_postfork _malloc_postfork_child These zero-argument functions are invoked at the obvious times in libc's fork() function. There's an example in src/lib/libbsdmalloc. (This is obviously NetBSD-specific, but so is any API contract around overriding the symbols malloc/free and expecting them to be usable after fork at all.)