Skip to content

Asyncio remote debugging tools can error while attaching #144881

@johnslavik

Description

@johnslavik

Bug report

Bug description:

Tachyon profiler collections always have some error rate.

My intuition is that the same applies to the asyncio debugging tools -- they can try to attach in a wrong moment.

I've played with

except (RuntimeError, UnicodeDecodeError, MemoryError, OSError):
collector.collect_failed_sample()
errors += 1
except Exception as e:

and the errors look very similar.

They are especially visible when running the asyncio debugging tools on asyncio programs that use thread delegation:

Screen.Recording.2026-02-16.at.16.22.21.mov
(Code used)
import asyncio
import os

async def task_inner():
    with open("/dev/urandom", "rb") as urandom:
        feed = await asyncio.to_thread(urandom.read, 128)
        print(feed[:16].hex(), "\r", end="")

async def task():
    async with asyncio.TaskGroup() as tg:
        tg.create_task(task_inner())

async def main():
    while True:
        await task()

if __name__ == "__main__":
    print(f"PID: {os.getpid()}")
    asyncio.run(main())

Regular users won't use watch, so these expected errors could confuse them. I think we should handle this somehow.

My idea is to simply write a retry loop for asyncio debugging tools attaching and maybe let the user control the number of retries to attempt through a CLI flag.

Another idea could be to hint the user of the asyncio debug tools that errors can happen and that it is not a bug, and they could retry themselves.

cc @pablogsal

CPython versions tested on:

CPython main branch

Operating systems tested on:

Linux, macOS

Metadata

Metadata

Assignees

Labels

3.14bugs and security fixes3.15new features, bugs and security fixesstdlibStandard Library Python modules in the Lib/ directorytopic-asynciotype-bugAn unexpected behavior, bug, or error

Projects

Status

Todo

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions