Brandon Williams wrote:

> As far as I understand the only instance of threading and forking which exists
> in the current code base is 'git grep --recurse-submodules', and the standard
> builds against glibc shouldn't exhibit any of this deadlocking.

I don't think we consider builds against glibc to be the only standard
way to build git.  So I do think we need to fix this (and not, e.g.,
to modify our build instructions to require use of a malloc
implementation that registers an atfork handler that unlocks all of
its locks).  Thanks for your work on that.

Jonathan Tan had an idea about how to side-step the issue: what if
"grep" forks an appropriate set of child processes before creating any
threads and then communicates with those children using pipes?
Because no threads have been spawned yet in the children, the child
processes can use ordinary run_command.  When run_command finishes,
the child is still available to launch another command using
run_command.

Thoughts?
Jonathan

Reply via email to