On Wednesday, 28 December 2016 at 12:30:03 UTC, unDEFER wrote:
On Wednesday, 28 December 2016 at 11:32:09 UTC, Nemanja Boric wrote:
My other guess is that you're using D threads in your application?

Of course I'm using D threads, but with it all is normally.

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.

Reply via email to