Skip to content

Possible race condition failure in uasyncio wait_for/wait_for_ms #7386

@jonathanhogg

Description

@jonathanhogg

I'm seeing an issue using wait_for_ms() on reads from a socket, on ESP32 devices with recent HEAD, where occasionally I get an uncaught task CancelledError logged to the terminal and the wait_for_ms() never returns, locking up my code.

I'm using UDP sockets, so I'm not using the built-in Stream stuff, instead I'm rolling my own using the same underlying yield core._io_queue.queue_read() trick.

I suspect that it's triggered by a packet arriving at the same time as the wait ending, but I've had a gander at the uasyncio code and I can't see any obvious logic errors.

I'm using an ugly workaround at the moment (ditching the IOQueue and just repeatedly attempting to read from a non-blocking socket) as I have to have this code working this week, but I'll try to get back to it next week and see if I can reduce it to a smaller failing case and work out what's going wrong.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugextmodRelates to extmod/ directory in source

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions