> From: Kevin Wolf [mailto:kw...@redhat.com] > > void replay_run_block_event(uint32_t id) > > { > > Request *req; > > if (replay_mode == REPLAY_MODE_PLAY) { > > while (!(req = block_request_find(id))) { > > //aio_poll(bdrv_get_aio_context(req->bs), true); > > usleep(1); > > } > > > qemu_coroutine_enter(req->co, NULL); > > } > > } > > > > > Can you provide more detail about the exact place where it's hanging, > > > both in the coroutine and in the main "coroutine" that executes > > > aio_poll()?
I've tried to replace usleep with aio_poll. In this case replay cannot be made, because of recursive mutex lock: aio_poll -> qemu_clock_get_ns -> <lock replay mutex> -> replay_run_block_event -> aio_poll -> qemu_clock_get_ns -> <lock replay mutex> -> <assert failed> Pavel Dovgalyuk