summary refs log tree commit diff stats
path: root/gitlab/issues/target_missing/host_missing/accel_missing/2570.toml
blob: 729ae83f22e8726e496039096698ee006f356c61 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
id = 2570
title = "TCG Plugins: \"Code should not be reached\" error after resetting plugin from vcpu_tb_trans callback"
state = "closed"
created_at = "2024-09-12T17:25:03.191Z"
closed_at = "2024-10-28T14:17:40.288Z"
labels = ["TCG plugins"]
url = "https://gitlab.com/qemu-project/qemu/-/issues/2570"
host-os = "Ubuntu 22.04"
host-arch = "x86_64"
qemu-version = "QEMU emulator version 9.1.50 (v9.1.0-210-g4b7ea33074)"
guest-os = "Ubuntu 18.04"
guest-arch = "x86_64"
description = """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)
```"""
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 = """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;
}
```"""