On Wednesday, 28 December 2016 at 12:39:46 UTC, Nemanja Boric
wrote:
Right, nothing wrong with threads, but super tricky to combine
it with fork. So, it could be that one of your threads is using
GC at the point of the forking, so it keeps the GC locked. Now
you fork, and _all your threads don't exist anymore, they are
vanished, and if you don't do some clever stuff in atfork
handler, there will be no cleanup_ - you just have copy of the
thread that called fork. So, the thread that should release GC
lock doesn't exist anymore, and there's nothing to release
mutex, and it will stay locked forever in your forked process.
Thanks a lot for such detailed explanation!