The patch is most definitely wrong. The page protection
is required to implement self-modifying code, of which a
signal trampoline is a subset.
Moreover, your test case works for me using both
x86_64-linux and aarch64-linux as hosts.
There may be a bug, but I suspect it to be within WSL.
I have no way to test that one way or another.
** Changed in: qemu
Status: New => Incomplete
--
You received this bug notification because you are a member of qemu-
devel-ml, which is subscribed to QEMU.
https://bugs.launchpad.net/bugs/1903833
Title:
User mode qemu-aarch: SIGGSEGV signal handler works wrong
Status in QEMU:
Incomplete
Bug description:
I have a user mode qemu-aarch issue. Program with SIGSEGV signal handler
works wrong under qemu-aarch:
once the progam handles the SEGV signal, qemu marks the program's page
protected, and signal handler gets SEGV on each subsequent memory access
instruction within a program.
The issue is reproduced on WSL Ubuntu 20.04 under Windows 10, qemu-aarch64
version 5.1.50
The issue is also reproducible on the latest upstream qemu-aarch build.
The following workaround disables mprotect call and fixes the issue:
https://github.com/BorisUlasevich/qemu/commit/3063d9a64f8395185d65c6b6710d28ee92cd8be5
The issue can be reproduced on OpenJDK which reports SIGSEGV
immediately after start. The small reproducer program is attached.
To manage notifications about this bug go to:
https://bugs.launchpad.net/qemu/+bug/1903833/+subscriptions