[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PULL 05/13] linux-user: Use walk_memory_regions for open_self_maps
|
From: |
Richard Purdie |
|
Subject: |
Re: [PULL 05/13] linux-user: Use walk_memory_regions for open_self_maps |
|
Date: |
Fri, 26 Jan 2024 13:03:58 +0000 |
|
User-agent: |
Evolution 3.50.0-1 |
Hi,
I've run into a problem with this change.
We (Yocto Project) upgraded to qemu 8.2.0 recently and after that we
started seeing errors cross compiling webkitgtk on x86_64 for x86_64
during the introspection code which runs under user mode qemu.
The error we see is:
qemu-x86_64: QEMU internal SIGSEGV {code=MAPERR, addr=0x20}
Segmentation fault
e.g. here:
https://autobuilder.yoctoproject.org/typhoon/#/builders/40/builds/8488/steps/11/logs/stdio
This usually seems to happen on our debian 11 based autobuilder
machines.
I took one of the broken builds and bisected it to this change (commit
7b7a3366e142d3baeb3fd1d3660a50e7956c19eb).
There was a change in output from commit
7dfd3ca8d95f9962cdd2ebdfcdd699279b98fa18, before that it was:
ERROR:../git/accel/tcg/cpu-exec.c:532:cpu_exec_longjmp_cleanup: assertion
failed: (cpu == current_cpu)
Bail out! ERROR:../git/accel/tcg/cpu-exec.c:532:cpu_exec_longjmp_cleanup:
assertion failed: (cpu == current_cpu)
After digging into the code and trying to work out what is going on, I
realised that n is NULL when it fails so this makes the problem "go
away":
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index e384e14248..2577fb770d 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -8085,6 +8085,9 @@ static int open_self_maps_2(void *opaque, target_ulong
guest_start,
while (1) {
IntervalTreeNode *n =
interval_tree_iter_first(d->host_maps, host_start, host_start);
+ if (!n) {
+ return 0;
+ }
MapInfo *mi = container_of(n, MapInfo, itree);
uintptr_t this_hlast = MIN(host_last, n->last);
target_ulong this_gend = h2g(this_hlast) + 1;
I'm hoping that might be enough to give you an idea of what is going on
and what the correct fix may be?
I haven't managed to make an isolated test to reproduce the issue yet.
Cheers,
Richard
- Re: [PULL 05/13] linux-user: Use walk_memory_regions for open_self_maps,
Richard Purdie <=