blob: da5ae87e0c4b1ce2784559d9262ec3a126423a3b [file] [log] [blame]
Patrick Williamsf52e3dd2024-01-26 13:04:43 -06001With qemu 8.2.0 we started seeing SEGV errors when compiling webkitgtk from
2usermode qemu:
3
4qemu-x86_64: QEMU internal SIGSEGV {code=MAPERR, addr=0x20}
5Segmentation fault
6
7By bisection, this was tracked down to:
8
9commit 7b7a3366e142d3baeb3fd1d3660a50e7956c19eb
10Author: Richard Henderson <richard.henderson@linaro.org>
11Date: Tue Aug 8 20:02:19 2023 -0700
12
13 linux-user: Use walk_memory_regions for open_self_maps
14
15 Replace the by-hand method of region identification with
16 the official user-exec interface. Cross-check the region
17 provided to the callback with the interval tree from
18 read_self_maps().
19
20 Tested-by: Helge Deller <deller@gmx.de>
21 Reviewed-by: Ilya Leoshkevich <iii@linux.ibm.com>
22 Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
23
24and specifically to 'n' being NULL. For now, just skip in that case
25until a proper fix can be identified.
26
27Reported upstream: https://www.mail-archive.com/qemu-devel@nongnu.org/msg1018813.html
28
29YOCTO #15367
30
31Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
32Upstream-Status: Pending
33
34diff --git a/linux-user/syscall.c b/linux-user/syscall.c
35index e384e14248..2577fb770d 100644
36--- a/linux-user/syscall.c
37+++ b/linux-user/syscall.c
38@@ -8085,6 +8085,9 @@ static int open_self_maps_2(void *opaque, target_ulong guest_start,
39 while (1) {
40 IntervalTreeNode *n =
41 interval_tree_iter_first(d->host_maps, host_start, host_start);
42+ if (!n) {
43+ return 0;
44+ }
45 MapInfo *mi = container_of(n, MapInfo, itree);
46 uintptr_t this_hlast = MIN(host_last, n->last);
47 target_ulong this_gend = h2g(this_hlast) + 1;