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 #include 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; } ```