summary refs log tree commit diff stats
path: root/results/classifier/deepseek-2-tmp/output/hypervisor/1362635
diff options
context:
space:
mode:
authorChristian Krinitsin <mail@krinitsin.com>2025-06-30 12:34:26 +0000
committerChristian Krinitsin <mail@krinitsin.com>2025-06-30 12:35:44 +0000
commit25f8033d556aa17afaea4a5196ea7a69fe248320 (patch)
tree0f056db167683be54ea1e5e72d29d6069af55e7d /results/classifier/deepseek-2-tmp/output/hypervisor/1362635
parent8e6da29e4ee5fc14bc1cc816a24f21271f14090d (diff)
downloademulator-bug-study-25f8033d556aa17afaea4a5196ea7a69fe248320.tar.gz
emulator-bug-study-25f8033d556aa17afaea4a5196ea7a69fe248320.zip
add new temporary deepseek-r1:14b results
Diffstat (limited to 'results/classifier/deepseek-2-tmp/output/hypervisor/1362635')
-rw-r--r--results/classifier/deepseek-2-tmp/output/hypervisor/136263543
1 files changed, 43 insertions, 0 deletions
diff --git a/results/classifier/deepseek-2-tmp/output/hypervisor/1362635 b/results/classifier/deepseek-2-tmp/output/hypervisor/1362635
new file mode 100644
index 00000000..0da1b419
--- /dev/null
+++ b/results/classifier/deepseek-2-tmp/output/hypervisor/1362635
@@ -0,0 +1,43 @@
+
+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