| With qemu 8.2.0 we started seeing SEGV errors when compiling webkitgtk from |
| usermode qemu: |
| |
| qemu-x86_64: QEMU internal SIGSEGV {code=MAPERR, addr=0x20} |
| Segmentation fault |
| |
| By bisection, this was tracked down to: |
| |
| commit 7b7a3366e142d3baeb3fd1d3660a50e7956c19eb |
| Author: Richard Henderson <richard.henderson@linaro.org> |
| Date: Tue Aug 8 20:02:19 2023 -0700 |
| |
| linux-user: Use walk_memory_regions for open_self_maps |
| |
| Replace the by-hand method of region identification with |
| the official user-exec interface. Cross-check the region |
| provided to the callback with the interval tree from |
| read_self_maps(). |
| |
| Tested-by: Helge Deller <deller@gmx.de> |
| Reviewed-by: Ilya Leoshkevich <iii@linux.ibm.com> |
| Signed-off-by: Richard Henderson <richard.henderson@linaro.org> |
| |
| and specifically to 'n' being NULL. For now, just skip in that case |
| until a proper fix can be identified. |
| |
| Reported upstream: https://www.mail-archive.com/qemu-devel@nongnu.org/msg1018813.html |
| |
| YOCTO #15367 |
| |
| Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> |
| Upstream-Status: Pending |
| |
| 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; |