I can still reproduce this or a similar issue quite easily with exarkun's attached program after "pip install ampoule", although it only happens around one time in three or four for me. If I pass min=1, max=1 when creating the process pool, it happens every time.
The problem is that when a process reaches its timeout, then _returned ignores the fact that it was called as an errback and adds the child back to the ready set; if a new call happens to be dispatched to that particular process then it fails immediately.
I can still reproduce this or a similar issue quite easily with exarkun's attached program after "pip install ampoule", although it only happens around one time in three or four for me. If I pass min=1, max=1 when creating the process pool, it happens every time.
The problem is that when a process reaches its timeout, then _returned ignores the fact that it was called as an errback and adds the child back to the ready set; if a new call happens to be dispatched to that particular process then it fails immediately.