Excerpts from Yuya Nishihara's message of 2016-11-17 00:00:01 +0900: > On Wed, 16 Nov 2016 13:57:58 +0000, Jun Wu wrote: > > Excerpts from Yuya Nishihara's message of 2016-11-16 21:25:45 +0900: > > > I meant set.discard(). My idea is: > > > > > > a. discard pid by anyone who notices it no longer exists > > > b. then, kill the rest > > > > This looks good. Although it's still possible to kill processes multiple > > times (because atomic "wait-and-drop-pid" is impossible). > > Hmm, signal handlers are stacked at arbitrary code location, there's no > time-based preemption like threading, I think. So even if the wait-discard(p) > sequence is interrupted by another waitforworkers(), the process "p" would > be discarded before killworkers() thanks to ECHILD. And we do unregister the > SIGCHLD handler before killworkers(). > > I'll queue the series without the patch 6.
That will break Python < 2.7.4 if iterfile workaround is not ready. Hopefully I can figure out the final solution today. Worst case, we test Python version and fallback to the old code in worker.py _______________________________________________ Mercurial-devel mailing list Mercurial-devel@mercurial-scm.org https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel