Thanks for the helgrind example. I'll have to add that to my toolkit.
[https://linux.die.net/man/3/fork](https://linux.die.net/man/3/fork)
> A process shall be created with a single thread. If a multi-threaded process
> calls fork(), the new process shall contain a replica of the calling thread
> and its entire address space, possibly including the states of mutexes and
> other resources...
import threadpool
when isMainModule:
quit(QUITSUCCESS)
Running strace, I noticed that there were 12 clone syscalls made.
In nim/lib/pure/concurrency/threadpool.nim, setup is called in the main body
and creates a worker for each processor.
I think this explains why the mutex is not properly cleared as we are forking
from a multi-threaded process that is setup by threadpool.nim.