https://bugs.kde.org/show_bug.cgi?id=431157
--- Comment #19 from Mark Wielaard <m...@klomp.org> --- (In reply to Carl Love from comment #18) > Created attachment 136175 [details] > patch to add support for the scv instruction > > Rebased patch on Vaglrind mainline, enabled SCV which was masked out in > Mark's committed patch. Tested on Power 8 LE, Power BE, Power 9 and > prototype hardware using latest glibc that I can get. The patch seems to be > working and regression tests pass. Tested on a linux 5.11.0 and glibc 2.33 p9 machine (basically what Fedora 34 has). With current valgrind git, commit 9e9d1a171 (so SCV masked out): $ make nonexp-regtest == 633 tests, 6 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 3 post failures == memcheck/tests/bug340392 (stderr) memcheck/tests/leak_cpp_interior (stderr) memcheck/tests/linux/rfcomm (stderr) memcheck/tests/linux/sys-execveat (stderr) memcheck/tests/supp_unknown (stderr) drd/tests/swapcontext (stderr) massif/tests/deep-D (post) massif/tests/new-cpp (post) massif/tests/overloaded-new (post) With the attached patch (so with SCV enabled) on the same setup: == 634 tests, 44 stderr failures, 14 stdout failures, 0 stderrB failures, 0 stdoutB failures, 3 post failures == memcheck/tests/buflen_check (stderr) memcheck/tests/bug340392 (stderr) memcheck/tests/erringfds (stdout) memcheck/tests/erringfds (stderr) memcheck/tests/file_locking (stderr) memcheck/tests/leak_cpp_interior (stderr) memcheck/tests/linux/memfd (stderr) memcheck/tests/linux/rfcomm (stderr) memcheck/tests/linux/sys-execveat (stderr) memcheck/tests/linux/sys-openat (stderr) memcheck/tests/linux/sys-preadv_pwritev (stderr) memcheck/tests/linux/timerfd-syscall (stderr) memcheck/tests/null_socket (stdout) memcheck/tests/post-syscall (stderr) memcheck/tests/sigkill (stderr) memcheck/tests/supp_unknown (stderr) memcheck/tests/writev1 (stderr) drd/tests/sem_open (stderr) drd/tests/sem_open2 (stderr) drd/tests/sem_open3 (stderr) drd/tests/sem_open_traced (stderr) drd/tests/std_list (stderr) drd/tests/swapcontext (stderr) massif/tests/deep-D (post) massif/tests/new-cpp (post) massif/tests/overloaded-new (post) none/tests/coolo_sigaction (stdout) none/tests/coolo_sigaction (stderr) none/tests/empty-exe (stderr) none/tests/linux/mremap (stderr) none/tests/linux/mremap2 (stdout) none/tests/linux/mremap2 (stderr) none/tests/map_unaligned (stderr) none/tests/nocwd (stdout) none/tests/nocwd (stderr) none/tests/pth_cancel2 (stderr) none/tests/rlimit64_nofile (stderr) none/tests/rlimit_nofile (stderr) none/tests/scripts/bug231357 (stdout) none/tests/scripts/bug231357 (stderr) none/tests/scripts/nointerp1 (stdout) none/tests/scripts/nointerp1 (stderr) none/tests/scripts/nointerp2 (stdout) none/tests/scripts/nointerp2 (stderr) none/tests/scripts/nointerp3 (stdout) none/tests/scripts/nointerp3 (stderr) none/tests/scripts/nointerp4 (stderr) none/tests/scripts/nointerp5 (stderr) none/tests/scripts/relative1 (stdout) none/tests/scripts/relative1 (stderr) none/tests/scripts/relative2 (stdout) none/tests/scripts/relative2 (stderr) none/tests/scripts/shell (stdout) none/tests/scripts/shell (stderr) none/tests/scripts/shell_valid1 (stderr) none/tests/scripts/shell_valid4 (stdout) none/tests/scripts/shell_valid4 (stderr) none/tests/scripts/shell_zerolength (stderr) none/tests/syscall-restart1 (stderr) none/tests/syscall-restart2 (stderr) none/tests/threadederrno (stdout) So there still seem to be some issue when SCV is enabled under valgrind. Here is a syscall trace of /bin/true --help the simplest program I found that crashes under valgrind with SCV support enabled: # ./vg-in-place -q --trace-syscalls=yes --tool=none /bin/true --help SYSCALL[279836,1](45) sys_brk ( 0x0 ) --> [pre-success] Success(0x4070000) SYSCALL[279836,1](122) sys_newuname ( 0x1fff00e0b0 )[sync] --> Success(0x0) SYSCALL[279836,1](286) sys_openat ( -100, 0x4061a40(/root/valgrind/./.in_place/vgpreload_core-ppc64le-linux.so), 524288 ) --> [async] ... SYSCALL[279836,1](286) ... [async] --> Success(0x3) SYSCALL[279836,1](3) sys_read ( 3, 0x1fff00c938, 832 ) --> [async] ... SYSCALL[279836,1](3) ... [async] --> Success(0x340) SYSCALL[279836,1](291) sys_newfstatat ( 3, 0x403fc08(), 0x1fff00c750 )[sync] --> Success(0x0) SYSCALL[279836,1](90) sys_mmap ( 0x0, 131128, 5, 2050, 3, 0 ) --> [pre-success] Success(0x4870000) SYSCALL[279836,1](90) sys_mmap ( 0x4880000, 65536, 3, 2066, 3, 0 ) --> [pre-success] Success(0x4880000) SYSCALL[279836,1](90) sys_mmap ( 0x4890000, 56, 3, 50, 18446744073709551615, 0 ) --> [pre-success] Success(0x4890000) SYSCALL[279836,1](6) sys_close ( 3 )[sync] --> Success(0x0) SYSCALL[279836,1](33) sys_access ( 0x403c9d0(/etc/ld.so.preload), 4 )[sync] --> Failure(0x2) SYSCALL[279836,1](286) sys_openat ( -100, 0x403ea78(/etc/ld.so.cache), 524288 ) --> [async] ... SYSCALL[279836,1](286) ... [async] --> Success(0x3) SYSCALL[279836,1](291) sys_newfstatat ( 3, 0x403fc08(), 0x1fff00d230 )[sync] --> Success(0x0) SYSCALL[279836,1](90) sys_mmap ( 0x0, 25160, 1, 2, 3, 0 ) --> [pre-success] Success(0x48a0000) SYSCALL[279836,1](6) sys_close ( 3 )[sync] --> Success(0x0) SYSCALL[279836,1](286) sys_openat ( -100, 0x4061fb0(/lib64/power9/libc.so.6), 524288 ) --> [async] ... SYSCALL[279836,1](286) ... [async] --> Success(0x3) SYSCALL[279836,1](3) sys_read ( 3, 0x1fff00d4e8, 832 ) --> [async] ... SYSCALL[279836,1](3) ... [async] --> Success(0x340) SYSCALL[279836,1](291) sys_newfstatat ( 3, 0x403fc08(), 0x1fff00d300 )[sync] --> Success(0x0) SYSCALL[279836,1](90) sys_mmap ( 0x0, 2272232, 5, 2050, 3, 0 ) --> [pre-success] Success(0x48b0000) SYSCALL[279836,1](125) sys_mprotect ( 0x4ab0000, 65536, 0 )[sync] --> Success(0x0) SYSCALL[279836,1](90) sys_mmap ( 0x4ac0000, 131072, 3, 2066, 3, 2097152 ) --> [pre-success] Success(0x4ac0000) SYSCALL[279836,1](6) sys_close ( 3 )[sync] --> Success(0x0) SYSCALL[279836,1](125) sys_mprotect ( 0x4ac0000, 65536, 1 )[sync] --> Success(0x0) SYSCALL[279836,1](125) sys_mprotect ( 0x4880000, 65536, 1 )[sync] --> Success(0x0) SYSCALL[279836,1](125) sys_mprotect ( 0x190000, 65536, 1 )[sync] --> Success(0x0) SYSCALL[279836,1](125) sys_mprotect ( 0x4050000, 65536, 1 )[sync] --> Success(0x0) SYSCALL[279836,1](91) sys_munmap ( 0x48a0000, 25160 )[sync] --> Success(0x0) SYSCALL[279836,1](45) sys_brk ( 0x0 ) --> [pre-success] Success(0x4070000) SYSCALL[279836,1](45) sys_brk ( 0x40a0000 ) --> [pre-success] Success(0x40a0000) SYSCALL[279836,1](286) sys_openat ( -100, 0x4a6ee28(/usr/lib/locale/locale-archive), 524288 ) --> [async] ... SYSCALL[279836,1](286) ... [async] --> Success(0xfffffffffffffffe) SYSCALL[279836,1](291) sys_newfstatat ( 24, 0x4a73980(), 0x4ad2578 )[sync] --> Failure(0x9) SYSCALL[279836,1](90) sys_mmap ( 0x0, 0, 1, 2, 24, 0 ) --> [pre-fail] Failure(0x16) ==279836== ==279836== Process terminating with default action of signal 11 (SIGSEGV): dumping core ==279836== Access not within mapped region at address 0x26 ==279836== at 0x48F1D00: _nl_load_locale_from_archive (in /usr/lib64/power9/libc-2.33.so) ==279836== by 0x48F03DF: _nl_find_locale (in /usr/lib64/power9/libc-2.33.so) ==279836== by 0x48EF95F: setlocale (in /usr/lib64/power9/libc-2.33.so) ==279836== by 0x181963: ??? (in /usr/bin/true) ==279836== by 0x48DF953: generic_start_main.constprop.0.isra.0 (in /usr/lib64/power9/libc-2.33.so) ==279836== by 0x48DFB2F: (below main) (in /usr/lib64/power9/libc-2.33.so) ==279836== If you believe this happened as a result of a stack ==279836== overflow in your program's main thread (unlikely but ==279836== possible), you can try to increase the size of the ==279836== main thread stack using the --main-stacksize= flag. ==279836== The main thread stack size used in this run was 8388608. ./vg-in-place: line 31: 279836 Segmentation fault (core dumped) VALGRIND_LIB="$vgbasedir/.in_place" VALGRIND_LIB_INNER="$vgbasedir/.in_place" "$vgbasedir/coregrind/valgrind" "$@" -- You are receiving this mail because: You are watching all bug changes.