User mode qemu-aarch: SIGGSEGV signal handler works wrong

Bug #1903833 reported by Boris
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
QEMU
Expired
Undecided
Unassigned

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.

Revision history for this message
Boris (ulasevich) wrote :
Revision history for this message
Richard Henderson (rth) wrote :

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
Revision history for this message
Launchpad Janitor (janitor) wrote :

[Expired for QEMU because there has been no activity for 60 days.]

Changed in qemu:
status: Incomplete → Expired
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.