Message 78668 - Python tracker
Actually, your code can deadlock since ENTER_HASHLIB doesn't release the GIL. Think about it: // Thread A is here, holding the GIL and waiting for self->lock to be // released by thread B ENTER_HASHLIB(self) Py_BEGIN_ALLOW_THREADS // Thread B is here, holding self->lock and waiting for the GIL to be // released by thread A Py_END_ALLOW_THREADS LEAVE_HASHLIB(self)