summaryrefslogtreecommitdiffstats
path: root/Misc
diff options
context:
space:
mode:
authorElvis Pranskevichus <elvis@magic.io>2018-10-03 14:30:31 (GMT)
committerYury Selivanov <yury@magic.io>2018-10-03 14:30:31 (GMT)
commit0c797a6aca1c293e530e18c5e9fa02c670a9a4ed (patch)
tree0a7627593801b009925f9909715b8cacabf6c91e /Misc
parent96c593279400693226d5a560c420ae0fcf1731b9 (diff)
downloadcpython-0c797a6aca1c293e530e18c5e9fa02c670a9a4ed.zip
cpython-0c797a6aca1c293e530e18c5e9fa02c670a9a4ed.tar.gz
cpython-0c797a6aca1c293e530e18c5e9fa02c670a9a4ed.tar.bz2
bpo-34872: Fix self-cancellation in C implementation of asyncio.Task (GH-9679)
The C implementation of asyncio.Task currently fails to perform the cancellation cleanup correctly in the following scenario. async def task1(): async def task2(): await task3 # task3 is never cancelled asyncio.current_task().cancel() await asyncio.create_task(task2()) The actuall error is a hardcoded call to `future_cancel()` instead of calling the `cancel()` method of a future-like object. Thanks to Vladimir Matveev for noticing the code discrepancy and to Yury Selivanov for coming up with a pathological scenario.
Diffstat (limited to 'Misc')
-rw-r--r--Misc/NEWS.d/next/Library/2018-10-02-19-36-34.bpo-34872.yWZRhI.rst1
1 files changed, 1 insertions, 0 deletions
diff --git a/Misc/NEWS.d/next/Library/2018-10-02-19-36-34.bpo-34872.yWZRhI.rst b/Misc/NEWS.d/next/Library/2018-10-02-19-36-34.bpo-34872.yWZRhI.rst
new file mode 100644
index 0000000..cd02710
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2018-10-02-19-36-34.bpo-34872.yWZRhI.rst
@@ -0,0 +1 @@
+Fix self-cancellation in C implementation of asyncio.Task