Skip to content

Cancellation leaks out of asyncio.TaskGroup on 3.12 when using eager tasks#128588

@graingert

Description

@graingert

Bug report

Bug description:

importsysimportasyncioifsys.platform=="win32": EventLoop=asyncio.ProactorEventLoopelse: EventLoop=asyncio.SelectorEventLoopasyncdefdemo(): classMyError(Exception): passasyncdefthrow_error(): raiseMyErrortry: asyncwithasyncio.TaskGroup() astg: tg.create_task(throw_error()) except* MyError: passdefloop_factory(): loop=EventLoop() loop.set_task_factory(asyncio.eager_task_factory) returnloopasyncio.run(demo(), loop_factory=loop_factory)

results in:

Traceback (most recent call last): File "/home/graingert/projects/anyio/demo.py", line 29, in <module> asyncio.run(demo(), loop_factory=loop_factory) File "/usr/lib/python3.12/asyncio/runners.py", line 194, in runreturn runner.run(main) ^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/asyncio/runners.py", line 118, in runreturnself._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/asyncio/base_events.py", line 687, in run_until_completereturn future.result() ^^^^^^^^^^^^^^^ asyncio.exceptions.CancelledError

CPython versions tested on:

3.12

Operating systems tested on:

Linux

Linked PRs

Metadata

Metadata

Assignees

No one assigned

    Labels

    3.12only security fixestopic-asynciotype-bugAn unexpected behavior, bug, or error

    Projects

    Status

    Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions