It's actually not clear to me what lock it is from the core file I took, as 
rlock_acquire() is called through a function pointer from 
method_vectorcall_VARARGS_KEYWORDS() (I posted the backtrace separately).

My suspicion is that it doesn't fail on macOS because it may keep all of the 
semaphore's state in the kernel, which means that it is not necessarily 
inherited on fork(). QNX keeps the count in user mode, in a similar fashion to 
the way some state is kept in user mode for fast mutexes.

I'll see if I can come up with a simple scenario. In the mean time I am trying 
to switch to posix_spawn() to see if it fixes the problem (and will also be 
much faster on QNX, as you don't need to create a duplicate address space just 
to tear it down with exec()).

--Elad
_______________________________________________
Python-Dev mailing list -- python-dev@python.org
To unsubscribe send an email to python-dev-le...@python.org
https://mail.python.org/mailman3/lists/python-dev.python.org/
Message archived at 
https://mail.python.org/archives/list/python-dev@python.org/message/XHHRNVTWADJTMHODQUVRH5QF3TLTIT4N/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to