blob: 2ce5c16517b78b264ffce0b6de6d25c8c095f6d0 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
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"
|