tech-kern archive

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

Re: using of fork() in multithreaded application



On Fri, Jan 24, 2025 at 15:10:50 +0000, Taylor R Campbell wrote:

> > Date: Fri, 24 Jan 2025 16:45:29 +0300
> > From: Valery Ushakov <uwe%stderr.spb.ru@localhost>
> > 
> > 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.)

Right, but it is not documented and my earlier attempts to solicit
feedback for this

  https://mail-index.netbsd.org/tech-toolchain/2024/11/10/msg004564.html

received no replies.

PS: As usual, the offer is that I will be glad to fix/clean up any
mdoc markup issues if someone updates the man pages with the necessary
contents.

-uwe


Home | Main Index | Thread Index | Old Index