diff options
| author | Christian Krinitsin <mail@krinitsin.com> | 2025-05-30 16:52:07 +0200 |
|---|---|---|
| committer | Christian Krinitsin <mail@krinitsin.com> | 2025-05-30 16:52:17 +0200 |
| commit | 9260319e7411ff8281700a532caa436f40120ec4 (patch) | |
| tree | 2f6bfe5f3458dd49d328d3a9eb508595450adec0 /gitlab/issues_text/target_arm/host_x86/accel_missing/2146 | |
| parent | 225caa38269323af1bfc2daadff5ec8bd930747f (diff) | |
| download | qemu-analysis-9260319e7411ff8281700a532caa436f40120ec4.tar.gz qemu-analysis-9260319e7411ff8281700a532caa436f40120ec4.zip | |
gitlab scraper: download in toml and text format
Diffstat (limited to 'gitlab/issues_text/target_arm/host_x86/accel_missing/2146')
| -rw-r--r-- | gitlab/issues_text/target_arm/host_x86/accel_missing/2146 | 114 |
1 files changed, 114 insertions, 0 deletions
diff --git a/gitlab/issues_text/target_arm/host_x86/accel_missing/2146 b/gitlab/issues_text/target_arm/host_x86/accel_missing/2146 new file mode 100644 index 000000000..0a435335f --- /dev/null +++ b/gitlab/issues_text/target_arm/host_x86/accel_missing/2146 @@ -0,0 +1,114 @@ +qemu-system-aarch64 Segfaults +Description of problem: +Never finishes the script below always segfaults after a few hours +in seemingly random functions. +Steps to reproduce: +This is what i did with qemu version 8.2.1 +inside test directory: +1. wget https://download.qemu.org/qemu-8.2.1.tar.xz +2. tar xvJf qemu-8.2.1.tar.xz +3. cd qemu-8.2.1 +4. ./configure --target-list="aarch64-linux-user, aarch64-softmmu" --enable-slirp (crashes with and without --enable-debug) +5. make -j$(nproc) +6. ln -sf "$PWD/build/qemu-system-aarch64" "../qemu-system-aarch64" +7. cd .. + +Now the VM +1. wget -O installer-linux https://deb.debian.org/debian/dists/bookworm/main/installer-arm64/current/images/netboot/debian-installer/arm64/linux +2. wget -O installer-initrd.gz https://deb.debian.org/debian/dists/bookworm/main/installer-arm64/current/images/netboot/debian-installer/arm64/initrd.gz +3. qemu-img create -f qcow2 hda.qcow2 15G +4. ./qemu-system-aarch64 -M virt -m 6G -cpu cortex-a72 \ + -kernel installer-linux \ + -initrd installer-initrd.gz \ + -drive if=none,file=hda.qcow2,format=qcow2,id=hd \ + -device virtio-blk-pci,drive=hd \ + -netdev user,id=mynet \ + -device virtio-net-pci,netdev=mynet \ + -nographic -no-reboot \ + -accel tcg,thread=multi \ + -smp 8 +5. Install minimal debian inside the VM +6. sudo virt-copy-out -a hda.qcow2 /boot/vmlinuz-6.1.0-17-arm64 /boot/initrd.img-6.1.0-17-arm64 . +7. ./qemu-system-aarch64 -M virt -m 6G -cpu cortex-a72 \ + -kernel vmlinuz-6.1.0-17-arm64 \ + -initrd initrd.img-6.1.0-17-arm64 \ + -append 'root=/dev/vda2' \ + -drive if=none,file=hda.qcow2,format=qcow2,id=hd \ + -device virtio-blk-pci,drive=hd \ + -netdev user,id=mynet,hostfwd=tcp::10022-:22 \ + -device virtio-net-pci,netdev=mynet \ + -nographic \ + -accel tcg,thread=multi \ + -smp 8 +8. Now run this script inside some directory inside the VM(you might need to install gcc first) + +#!/bin/bash + +wget --no-clobber https://sourceware.org/pub/binutils/releases/binutils-2.41.tar.xz +wget --no-clobber https://ftp.gnu.org/gnu/mpfr/mpfr-4.2.0.tar.xz +wget --no-clobber https://ftp.gnu.org/gnu/gmp/gmp-6.3.0.tar.xz +wget --no-clobber https://ftp.gnu.org/gnu/mpc/mpc-1.3.1.tar.gz +wget --no-clobber https://ftp.gnu.org/gnu/gcc/gcc-13.2.0/gcc-13.2.0.tar.xz + +BUG_TARGET="$(uname -m)-bug-linux-gnu" + +tar -xf binutils-2.41.tar.xz +cd binutils-2.41 +mkdir -vp build +cd build +../configure --prefix=$PWD \ + --with-sysroot=$PWD \ + --target=$BUG_TARGET \ + --disable-nls \ + --enable-gprofng=no \ + --disable-werror \ + --disable-gdb +make --jobs $(nproc) +cd ../.. +rm -rf binutils + +tar -xf gcc-13.2.0.tar.xz +cd gcc-13.2.0 +tar -xf ../mpfr-4.2.0.tar.xz +tar -xf ../gmp-6.3.0.tar.xz +tar -xf ../mpc-1.3.1.tar.gz +mv mpfr-4.2.0 mpfr +mv gmp-6.3.0 gmp +mv mpc-1.3.1 mpc +mkdir -vp build +cd build +../configure --prefix=$PWD \ + --with-sysroot=$PWD \ + --target=$BUG_TARGET \ + --with-glibc-version=2.38 \ + --with-newlib \ + --without-headers \ + --enable-default-pie \ + --enable-default-ssp \ + --disable-nls \ + --disable-shared \ + --disable-multilib \ + --disable-threads \ + --disable-libatomic \ + --disable-libgomp \ + --disable-libquadmath \ + --disable-libssp \ + --disable-libvtv \ + --disable-libstdcxx \ + --enable-languages=c,c++ +make --jobs $(nproc) +cd ../.. +rm -rf gcc +Additional information: +I tried all the versions listed above, 6.2 usually segfaults in binutils while the other two run further. + +Example: +``` +Program terminated with signal SIGSEGV, Segmentation fault. +#0 0x000055555615dd37 in tlb_index (cpu=<Cannot access memory at address 0x7fffefffe1c8>, + mmu_idx=<Cannot access memory at address 0x7fffefffe1c0>, + addr=<Cannot access memory at address 0x7fffefffe1b8>) + at qemu-8.2.1/include/exec/cpu_ldst.h:367 +367 uintptr_t size_mask = cpu->neg.tlb.f[mmu_idx].mask >> CPU_TLB_ENTRY_BITS; +[Current thread is 1 (LWP 857562)] +``` |