Linux on riscv does not support SA_RESTORER. Currently QEMU thinks there is a field 'sa_restorer' in the middle of 'struct sigaction' which does not actually exist. This leads to corrupted data and out-of-bounds accesses.
Signed-off-by: Thomas Weißschuh <tho...@t-8ch.de> --- linux-user/riscv/target_signal.h | 1 + 1 file changed, 1 insertion(+) diff --git a/linux-user/riscv/target_signal.h b/linux-user/riscv/target_signal.h index 6c0470f0bc82c6330ce50cb662f2039cf1fab288..258945770b674c0b6b66a94659d9c93fbabffdfb 100644 --- a/linux-user/riscv/target_signal.h +++ b/linux-user/riscv/target_signal.h @@ -4,5 +4,6 @@ #include "../generic/signal.h" #define TARGET_ARCH_HAS_SIGTRAMP_PAGE 1 +#undef TARGET_SA_RESTORER #endif /* RISCV_TARGET_SIGNAL_H */ --- base-commit: 6fccaa2fba391815308a746d68f7fa197bc93586 change-id: 20250202-riscv-sa-restorer-edd3dfa7790f Best regards, -- Thomas Weißschuh <tho...@t-8ch.de>