On 28/11/2017 16:43, Kevin Wolf wrote: > This reverts commit 6133b39f3c36623425a6ede9e89d93175fde15cd. > > The commit checked conditions that would expose a bug, but there is no > real reason to forbid them apart from the bug, which we'll fix in a > minute. > > In particular, reentering a coroutine during co_aio_sleep_ns() is fine; > the function is explicitly written to allow this.
This is true. > aio_co_schedule() can indeed conflict with direct coroutine invocations, > but this is exactky what we want to fix, so remove that check again, > too. I'm not sure this is a good idea, as I answered in patch 3. It can also conflict badly with another aio_co_schedule(). Your patch here removes the assertion in this case, and patch 3 makes it easier to get into the situation where two aio_co_schedule()s conflict with each other. For example, say you have a coroutine that calls aio_co_schedule on itself, like while (true) { aio_co_schedule(qemu_get_current_aio_context(), qemu_coroutine_self()); } If somebody else calls qemu_coroutine_enter on this coroutine, *that* is the bug. These patches would just cause some random corruption or (perhaps worse) hang. Paolo