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.

Reply via email to