The current implementation just hangs if tests exceed 2^^15, at least
on Mac OS X. This might happen with a ninja check-all if one has a bunch of
llvm projects (especially sanitizers + iOS support)
Details
Diff Detail
- Repository
- rL LLVM
Event Timeline
This turns out to be simpler than I was imagining. Nice to finally have this implemented! (I still remember when I initially ran into this when doing crazy things with lit, but thought it would be a bit nastier to fix)
I can't speak for the technical changes in this patch, but I will say that I too was experiencing a deadlock on OS X and this patch fixes the problem.
This at least needs a comment explaining the limit. Ideally with a python bug number if it is a python bug.
No bug, and there's no specific limit in the docs (well, you can see
how it's implemented and check the limits of the Queue's innards).
multiprocessing.Queue is allowed to behave like this, though:
https://docs.python.org/2/library/multiprocessing.html#multiprocessing.Queue.put
"put(obj[, block[, timeout]])
Put obj into the queue. If the optional argument block is True (the
default) and timeout is None (the default), block if necessary until a
free slot is available."
Do you want me to add this to the commit message? I don't think it's
the most useful thing to have in a comment there, reminding people to
look at the docs. :-)
Thank you,
Filipe