Staging
v0.8.1
https://github.com/python/cpython
Revision a67bd53d3f80ac9c518b5426aa35459bd373b2b3 authored by Elvis Pranskevichus on 03 October 2018, 15:49:00 UTC, committed by Miss Islington (bot) on 03 October 2018, 15:49:00 UTC


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..
(cherry picked from commit 548ce9dedd2e90945970671d441436a6a91608ab)

Co-authored-by: Elvis Pranskevichus <elvis@magic.io>


https://bugs.python.org/issue34872
1 parent 063755c
Raw File
Tip revision: a67bd53d3f80ac9c518b5426aa35459bd373b2b3 authored by Elvis Pranskevichus on 03 October 2018, 15:49:00 UTC
[3.7] bpo-34872: Fix self-cancellation in C implementation of asyncio.Task (GH-9679) (GH-9691)
Tip revision: a67bd53
CODE_OF_CONDUCT.rst
Code of Conduct
===============

Please note that all interactions on
`Python Software Foundation <https://www.python.org/psf-landing/>`__-supported
infrastructure is `covered
<https://www.python.org/psf/records/board/minutes/2014-01-06/#management-of-the-psfs-web-properties>`__
by the `PSF Code of Conduct <https://www.python.org/psf/codeofconduct/>`__,
which includes all infrastructure used in the development of Python itself
(e.g. mailing lists, issue trackers, GitHub, etc.).

In general this means everyone is expected to be open, considerate, and
respectful of others no matter what their position is within the project.

back to top