summary refs log tree commit diff stats
path: root/results/classifier/118/TCG-arm/2570
diff options
context:
space:
mode:
Diffstat (limited to 'results/classifier/118/TCG-arm/2570')
-rw-r--r--results/classifier/118/TCG-arm/2570115
1 files changed, 115 insertions, 0 deletions
diff --git a/results/classifier/118/TCG-arm/2570 b/results/classifier/118/TCG-arm/2570
new file mode 100644
index 000000000..86a8f142e
--- /dev/null
+++ b/results/classifier/118/TCG-arm/2570
@@ -0,0 +1,115 @@
+TCG: 0.883
+debug: 0.837
+graphic: 0.832
+PID: 0.824
+architecture: 0.802
+arm: 0.802
+x86: 0.800
+mistranslation: 0.794
+files: 0.794
+register: 0.784
+vnc: 0.782
+virtual: 0.777
+peripherals: 0.770
+semantic: 0.763
+ppc: 0.759
+network: 0.749
+socket: 0.745
+VMM: 0.744
+performance: 0.742
+permissions: 0.730
+device: 0.724
+risc-v: 0.715
+i386: 0.699
+user-level: 0.690
+kernel: 0.677
+boot: 0.674
+assembly: 0.633
+hypervisor: 0.612
+KVM: 0.575
+--------------------
+i386: 0.899
+TCG: 0.861
+x86: 0.822
+debug: 0.645
+virtual: 0.440
+user-level: 0.298
+files: 0.078
+PID: 0.044
+hypervisor: 0.033
+kernel: 0.021
+register: 0.014
+device: 0.010
+assembly: 0.009
+architecture: 0.009
+performance: 0.008
+semantic: 0.008
+network: 0.006
+VMM: 0.004
+socket: 0.004
+boot: 0.004
+graphic: 0.004
+permissions: 0.002
+KVM: 0.002
+ppc: 0.002
+peripherals: 0.002
+vnc: 0.001
+risc-v: 0.001
+mistranslation: 0.001
+arm: 0.000
+
+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;
+}
+```