Messages in this thread | | | Subject | Re: [PATCH] nextfd(2) | From | Colin Walters <> | Date | Tue, 03 Apr 2012 15:21:13 -0400 |
| |
On Mon, 2012-04-02 at 16:17 -0700, KOSAKI Motohiro wrote:
> we can only call async-signal-safe functions after fork() when multi threads and > opendir() call malloc() internally. > > As far as I know, OpenJDK has a such fork-readdir-exec code and it can > make deadlock > when spawnning a new process. Unfortunately Java language perfeter to > make a lot of threads rather than other language. > > This patch can solve such multi threaded case. > > offtopic, glibc malloc is a slightly clever. It reinitialize its > internal lock when fork by > using thread_atfork() hook. It mean glibc malloc can be used after > fork() and the > technique can avoid this issue.
Yeah, a *lot* of code out there depends on this glibc malloc implementation detail. We uncovered our dependency on this in GNOME a while back while investigating getenv/setenv/fork and threads: https://bugzilla.gnome.org/show_bug.cgi?id=659326
| |