summary refs log tree commit diff stats
path: root/gitlab/issues/target_arm/host_missing/accel_missing/2333.toml
diff options
context:
space:
mode:
Diffstat (limited to 'gitlab/issues/target_arm/host_missing/accel_missing/2333.toml')
-rw-r--r--gitlab/issues/target_arm/host_missing/accel_missing/2333.toml53
1 files changed, 53 insertions, 0 deletions
diff --git a/gitlab/issues/target_arm/host_missing/accel_missing/2333.toml b/gitlab/issues/target_arm/host_missing/accel_missing/2333.toml
new file mode 100644
index 000000000..95e4cd6d6
--- /dev/null
+++ b/gitlab/issues/target_arm/host_missing/accel_missing/2333.toml
@@ -0,0 +1,53 @@
+id = 2333
+title = "VDSO on armeb seems broken"
+state = "closed"
+created_at = "2024-05-07T23:20:27.725Z"
+closed_at = "2024-11-16T21:18:19.592Z"
+labels = ["Closed::Fixed", "linux-user", "target: arm"]
+url = "https://gitlab.com/qemu-project/qemu/-/issues/2333"
+host-os = "n/a"
+host-arch = "n/a"
+qemu-version = "n/a"
+guest-os = "n/a"
+guest-arch = "n/a"
+description = """I'm seeing the VDSO method for `__clock_gettime64()` crashing under `qemu-armeb` (stack trace under Additional information, below).
+
+I rebuilt glibc with VDSO globally kludged off, and all was well."""
+reproduce = """```
+#include <time.h>
+#include <stdlib.h>
+#include <stdio.h>
+
+int main(int argc, char **argv) {
+  time_t ts;
+  printf("%ld\\n", time(&ts));
+  exit(0);
+}
+```
+
+Results, first with VDSO active via a system snapshot, second with the patched glibc:
+```
+$ armeb-linux-gnueabihf-gcc -o /tmp/time /tmp/time.c
+$ qemu-armeb -L /.mirrorsnaps/.rootsnap.prev/usr/armeb-linux-gnueabihf /tmp/time
+qemu: uncaught target signal 11 (Segmentation fault) - core dumped
+Segmentation fault
+$ qemu-armeb -L /usr/armeb-linux-gnueabihf /tmp/time
+1715123280
+```"""
+additional = """```
+Program received signal SIGSEGV, Segmentation fault.
+0x4082b462 in ?? ()
+(gdb) bt
+#0  0x4082b462 in ?? ()
+#1  0x40bf64a4 in __GI___clock_gettime64 (clock_id=clock_id@entry=5, tp=tp@entry=0x407fe9c0)
+    at ../sysdeps/unix/sysv/linux/clock_gettime.c:42
+#2  0x40be9f58 in __GI___time64 (timer=0x0) at ../sysdeps/unix/sysv/linux/time.c:60
+#3  __time (timer=0x407fea04) at ../sysdeps/unix/sysv/linux/time.c:73
+```
+
+`clock_gettime.c:42` is
+```
+      r = INTERNAL_VSYSCALL_CALL (vdso_time64, 2, clock_id, tp);
+```
+
+Interestingly, the problem doesn't occur on qemu-arm (little endian), all else equal."""