summary refs log tree commit diff stats
path: root/results/classifier/qwen3:32b/output/runtime/1362635
diff options
context:
space:
mode:
authorChristian Krinitsin <mail@krinitsin.com>2025-07-07 17:18:14 +0000
committerChristian Krinitsin <mail@krinitsin.com>2025-07-07 17:18:14 +0000
commit61361f925d4914a6608a0076e64cc2399311ed5f (patch)
tree6f717c2ff0b11d7493e60da9757818d119cfb541 /results/classifier/qwen3:32b/output/runtime/1362635
parent238ec2b7cc1557d6f34c33cc482e4d0cd3e266dd (diff)
downloademulator-bug-study-61361f925d4914a6608a0076e64cc2399311ed5f.tar.gz
emulator-bug-study-61361f925d4914a6608a0076e64cc2399311ed5f.zip
add new results
Diffstat (limited to 'results/classifier/qwen3:32b/output/runtime/1362635')
-rw-r--r--results/classifier/qwen3:32b/output/runtime/136263545
1 files changed, 45 insertions, 0 deletions
diff --git a/results/classifier/qwen3:32b/output/runtime/1362635 b/results/classifier/qwen3:32b/output/runtime/1362635
new file mode 100644
index 00000000..9536b6de
--- /dev/null
+++ b/results/classifier/qwen3:32b/output/runtime/1362635
@@ -0,0 +1,45 @@
+
+
+
+bdrv_read co-routine re-entered recursively
+
+calling bdrv_read in a loop leads to the follwing situation:
+
+bs->drv->bdrv_aio_readv is called, and finally calls bdrv_co_io_em_complete in other thread context.
+there is a possibility of calling bdrv_co_io_em_complete before calling qemu_coroutine_yield in bdrv_co_io_em. And qemu fails with "co-routine re-entered recursively".
+
+static void bdrv_co_io_em_complete(void *opaque, int ret)
+{
+    CoroutineIOCompletion *co = opaque;
+
+    co->ret = ret;
+    qemu_coroutine_enter(co->coroutine, NULL);
+}
+
+static int coroutine_fn bdrv_co_io_em(BlockDriverState *bs, int64_t sector_num,
+                                      int nb_sectors, QEMUIOVector *iov,
+                                      bool is_write)
+{
+    CoroutineIOCompletion co = {
+        .coroutine = qemu_coroutine_self(),
+    };
+    BlockDriverAIOCB *acb;
+
+    if (is_write) {
+        acb = bs->drv->bdrv_aio_writev(bs, sector_num, iov, nb_sectors,
+                                       bdrv_co_io_em_complete, &co);
+    } else {
+        acb = bs->drv->bdrv_aio_readv(bs, sector_num, iov, nb_sectors,
+                                      bdrv_co_io_em_complete, &co);
+    }
+
+    trace_bdrv_co_io_em(bs, sector_num, nb_sectors, is_write, acb);
+    if (!acb) {
+        return -EIO;
+    }
+    qemu_coroutine_yield();
+
+    return co.ret;
+}
+
+is it a bug, or may be I don't understand something?
\ No newline at end of file