summary refs log tree commit diff stats
path: root/gitlab/issues_text/target_missing/host_missing/accel_missing/2570
diff options
context:
space:
mode:
authorChristian Krinitsin <mail@krinitsin.com>2025-05-30 16:52:07 +0200
committerChristian Krinitsin <mail@krinitsin.com>2025-05-30 16:52:17 +0200
commit9260319e7411ff8281700a532caa436f40120ec4 (patch)
tree2f6bfe5f3458dd49d328d3a9eb508595450adec0 /gitlab/issues_text/target_missing/host_missing/accel_missing/2570
parent225caa38269323af1bfc2daadff5ec8bd930747f (diff)
downloadqemu-analysis-9260319e7411ff8281700a532caa436f40120ec4.tar.gz
qemu-analysis-9260319e7411ff8281700a532caa436f40120ec4.zip
gitlab scraper: download in toml and text format
Diffstat (limited to 'gitlab/issues_text/target_missing/host_missing/accel_missing/2570')
-rw-r--r--gitlab/issues_text/target_missing/host_missing/accel_missing/257055
1 files changed, 55 insertions, 0 deletions
diff --git a/gitlab/issues_text/target_missing/host_missing/accel_missing/2570 b/gitlab/issues_text/target_missing/host_missing/accel_missing/2570
new file mode 100644
index 000000000..13fc29790
--- /dev/null
+++ b/gitlab/issues_text/target_missing/host_missing/accel_missing/2570
@@ -0,0 +1,55 @@
+TCG Plugins: "Code should not be reached" error after resetting plugin from vcpu_tb_trans callback
+Description of problem:
+In a TCG plugin, using the `qemu_plugin_reset` method from within a `vcpu_tb_trans` callback produces the following error. If this isn't a supported use case, it should probably be described in the documentation. If this is supposed to work, it doesn't seem to.
+
+```
+**
+ERROR:/home/user/git/qemu/tcg/i386/tcg-target.c.inc:3018:tcg_out_op: code should not be reached
+Bail out! ERROR:/home/user/git/qemu/tcg/i386/tcg-target.c.inc:3018:tcg_out_op: code should not be reached
+Aborted (core dumped)
+```
+Steps to reproduce:
+1. Build the current head of master (4b7ea33074450bc6148c8e1545d78f179e64adb4) with the below `min` plugin (i.e., add to contrib/plugins and update contrib/plugins/Makefile so it is built)
+2. `../configure --enable-plugins --target-list=x86_64-softmmu --disable-docs`
+3. `make && make plugins`
+4. Get a qcow, e.g., the Ubuntu Bionic qcow from [here](https://panda.re/qcows/linux/ubuntu/1804/x86_64/bionic-server-cloudimg-amd64-noaslr-nokaslr.qcow2).
+5. `./qemu-system-x86_64 -plugin contrib/plugins/libmin.so bionic-server-cloudimg-amd64-noaslr-nokaslr.qcow2 -nographic`
+
+The first three lines are output by the plugin as expected, the error after that and the abort are unexpected:
+```
+Translating basic block
+Reset request issued
+Reset finished
+**
+ERROR:/home/user/git/qemu/tcg/i386/tcg-target.c.inc:3018:tcg_out_op: code should not be reached
+Bail out! ERROR:/home/user/git/qemu/tcg/i386/tcg-target.c.inc:3018:tcg_out_op: code should not be reached
+Aborted (core dumped)
+```
+Additional information:
+contrib/plugins/min.c
+```c
+#include <stdio.h>
+#include <qemu-plugin.h>
+
+QEMU_PLUGIN_EXPORT int qemu_plugin_version = QEMU_PLUGIN_VERSION;
+
+qemu_plugin_id_t plugin_id = {0};
+
+static void post_reset(qemu_plugin_id_t id) {
+    printf("Reset finished\n");
+}
+
+static void vcpu_tb_trans(qemu_plugin_id_t id, struct qemu_plugin_tb *tb) {
+    printf("Translating basic block\n");
+    qemu_plugin_reset(plugin_id, post_reset);
+    printf("Reset request issued\n");
+}
+
+QEMU_PLUGIN_EXPORT int qemu_plugin_install(qemu_plugin_id_t id,
+                   const qemu_info_t *info, int argc, char **argv) {
+
+    qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans);
+    plugin_id = id;
+    return 0;
+}
+```