overriding malloc vs. fork hooks
Valery Ushakov <[email protected]> Sun, 10 Nov 2024 17:39:16 +0300
| Newsgroups | gmane.os.netbsd.devel.toolchain |
|---|---|
| Message-ID | <[email protected]> |
A program can provide its own allocator. However when you try to link an alternative malloc statically, you run into conflicts b/c the libc malloc is still pulled in via malloc fork hooks. lib/libc/gen/pthread_atfork.c calls __malloc_prefork, and __malloc_postfork and __malloc_postfork_child respectively and since their implementations are in the same file as malloc, you get a name clash. With dynamic linking you end up calling libc malloc hooks, which is probably mostly harmless. As far as I can tell, mimalloc doesn't seem to provide these. dmalloc doesn't either, but mentions them in contrib/aix_5l_notes. I'm not sure if we can arrange for program to fail to link dynamically if they provide malloc, but don't provide the hooks. "Everyone" knows the set of malloc functions that need to be overriden all at once to use your own malloc, but the hooks is not in that well known list. We should at least document this. Thoughts? -uwe