Fix process crash. Remove hack to detect broken pipe behavior on linux < 2.6.11 #1135
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
kernel 2.6.11 was deprecated a long time ago. For reference, there were the last OS using it:
detectLinuxBrokenPipeBehavior() instantiates a pipe during import and calls select() to detect whether it is writeable.
This hack was meant to detect broken pipe behavior on linux < 2.6.11. select() is itself broken (including on recent kernels), crashing the python interpreter when there are more than 1024 opened file descriptors for the process.
This effectively causes applications attempting to (lazily) import twisted to crash -if 1024 file/socket are opened-.
Given the comments, it was known that this workaround was broken at the time it was made. Had to pick the lesser evil between the two kernel issues, broken pipe or broken select(). This should be removed since pipes were fixed, but select was not.
Remove this paragraph
Please have a look at our developer documentation before submitting your Pull Request.
https://twistedmatrix.com/trac/wiki/TwistedDevelopment#SubmittingaPatch
Contributor Checklist: