Monkey-patch a weakref set in Task to be a no-op. #3639
Merged
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.
Description:
Monkey-patches the asyncio.tasks.Task object to remove its weakref.WeakSet and
__del__
method. These were both involved in causing seg-faults due to a Python bug (https://bugs.python.org/issue26617) that may not be addressed in a shipping Python for some time. The side-effect is that the Task.all_tasks() method will no longer work. If code relies on that method (nothing does that I've found thus far) then it will be inaccurate and throw an exception as the replacement object does not implement__iter__
.Related issue (if applicable): fixes #3453
Pull request in home-assistant.io with documentation (if applicable): home-assistant/home-assistant.io#
Checklist:
If user exposed functionality or configuration variables are added/changed:
If the code does not interact with devices:
tox
run successfully. Your PR cannot be merged unless tests pass