id = 1224 title = "QEMU crashes with failed assertion when executing compressed instructions with C extension support disabled" state = "closed" created_at = "2022-09-21T15:26:47.231Z" closed_at = "2023-01-07T13:07:39.908Z" labels = ["Closed::Fixed", "accel: TCG", "target: riscv"] url = "https://gitlab.com/qemu-project/qemu/-/issues/1224" host-os = "n/a" host-arch = "riscv64" qemu-version = "master" guest-os = "n/a" guest-arch = "riscv64" description = """When executing compressed instructions with compressed instruction support disabled (c=off), the tcg riscv translations fails an assertion. ``` qemu-system-riscv64: qemu/accel/tcg/translate-all.c:1449: tb_gen_code: Assertion `tb->size != 0' failed. ``` I believe that the issue is caused due to the fact that the compressed instruction without RVC support branch of the `decode_opc` function does not update `ctx->pc_succ_insn`, which causes `ctx->base.pc_next` to not be updated in `riscv_tr_translate_insn`, which then finally triggers the assertion once the tcg generation returns to `tb_gen_code`. Side note, it also seems like the `gen_exception_illegal` call in the same if case is not needed, since we also call it again at the end of the function.""" reproduce = "n/a" additional = "n/a"