summary refs log tree commit diff stats
path: root/gitlab/issues/target_arm/host_missing/accel_missing/1444.toml
blob: 8da8effd92b4238eabe56209bf42cb6964a9e793 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
id = 1444
title = "ld.so on aarch64 crashes (SIGSEGV) qemu-aarch64-static to verify attached executable"
state = "closed"
created_at = "2023-01-17T11:39:00.706Z"
closed_at = "2023-01-18T09:15:45.903Z"
labels = ["linux-user", "target: arm", "workflow::Needs Info"]
url = "https://gitlab.com/qemu-project/qemu/-/issues/1444"
host-os = "Fedora 37"
host-arch = "X86"
qemu-version = "qemu-aarch64 version 7.0.0 (qemu-7.0.0-12.fc37)"
guest-os = "Custom built OS"
guest-arch = "aarch64"
description = """I'm currently managing an automation to build a linux distribution from nothing.
The issues is when I try to cross compile gobject-introspection for aarch64 (it is currently working on arm) because the g-ir-compile phase requires a binary verification using ld-linux-aarch64-so-1 --verify GLib-2.0 process used by ldd, that crashes qemu-aarch64-static.
Original command is: ${SYSROOT}/lib/ld-linux-aarch64-so-1 --verify ${HOME}/builds/gobject-introspection_1.75.4/tmp-introspectnpyrhpje/GLib-2.0.
I simplified the problem bringing out the ld.so and GLib-2.0 binary to obtain the same result.

This happens with glibc 2.35 and glibc 2.36 on aarch64 built with a gcc-12.2 cross compiler (x86 -> aarch64).

[GLib-2.0](/uploads/47932b18278835fb13ef0de4c34872fa/GLib-2.0)

[ld-linux-aarch64.so.1](/uploads/0ee01949285bea8ccfcebdc88a1d5b33/ld-linux-aarch64.so.1)

I tried to debug the SIGSEGV but it's out completely out of my capacity."""
reproduce = """1. Copy the 2 attached files in a directory:
2. Run: qemu-aarch64-static ./ld-linux-aarch64.so.1 --verify ./GLib-2.0
3. Result: Segmentation fault."""
additional = """I attach the output of gdb after install qemu debug symbols:

```
Thread 1 "qemu-aarch64-st" received signal SIGSEGV, Segmentation fault.
0x0000000000401088 in ?? ()
(gdb) bt
#0  0x0000000000401088 in ?? ()
#1  0x00000000006aa439 in g_malloc0 ()
#2  0x000000000061bb4b in page_find_alloc (index=index@entry=1024, alloc=alloc@entry=1)
    at ../accel/tcg/translate-all.c:494
#3  0x000000000061db12 in page_set_flags (start=start@entry=4194304, end=end@entry=4206592, flags=9, flags@entry=73)
    at ../accel/tcg/translate-all.c:2288
#4  0x0000000000629f10 in target_mmap (start=<optimized out>, start@entry=4194304, len=<optimized out>,
    len@entry=12288, target_prot=target_prot@entry=1, flags=2066, fd=fd@entry=3, offset=offset@entry=0)
    at ../linux-user/mmap.c:629
#5  0x0000000000641e1d in do_syscall1 (cpu_env=0x9e8c10, num=222, arg1=4194304, arg2=12288, arg3=1,
    arg4=<optimized out>, arg5=3, arg6=0, arg8=<optimized out>, arg7=<optimized out>) at ../linux-user/syscall.c:9961
#6  0x0000000000644c8c in do_syscall (cpu_env=cpu_env@entry=0x9e8c10, num=222, arg1=4194304, arg2=12288, arg3=1,
    arg4=2066, arg5=3, arg6=0, arg7=0, arg8=0) at ../linux-user/syscall.c:13203
#7  0x000000000040fca8 in cpu_loop (env=env@entry=0x9e8c10) at ../linux-user/aarch64/cpu_loop.c:93
#8  0x000000000040267f in main (argc=<optimized out>, argv=0x7fffffffdfc8, envp=<optimized out>)
    at ../linux-user/main.c:897
```"""