|
From: Paul F. <pa...@so...> - 2025-11-25 20:10:59
|
https://sourceware.org/cgit/valgrind/commit/?id=e7d7d6e99797083014dbb7d288c09e8c365feb9e commit e7d7d6e99797083014dbb7d288c09e8c365feb9e Author: Paul Floyd <pj...@wa...> Date: Tue Nov 25 21:04:17 2025 +0100 FreeBSD regtest: turn off a few gdbserver tests on systems with sysctl debug.ptrace_attach_transparent FreeBSD 15 (out soon) and 16 (the dev branch) have changed the behaviour of ptrace. When vgdb uses ptrace to get Valgrind to poll gdbserver to get out of blocking syscalls the client may return a bogus result from the syscall. Setting the syscall to 0 turns off this change and all 3 affected testcases should return to normal behaviour. However, setting the syscall needs root privileges. So I've added a test to see if the syscall is present and set to 1. If it is the prereq is not satisfied. Diff: --- gdbserver_tests/mcinvokeWS.vgtest | 2 +- gdbserver_tests/nlcontrolc.vgtest | 2 +- gdbserver_tests/nlsigvgdb.vgtest | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/gdbserver_tests/mcinvokeWS.vgtest b/gdbserver_tests/mcinvokeWS.vgtest index ced90fa183..54b11f7bc1 100644 --- a/gdbserver_tests/mcinvokeWS.vgtest +++ b/gdbserver_tests/mcinvokeWS.vgtest @@ -4,7 +4,7 @@ prog: sleepers args: 1 10000000 0 -S-S-S-S vgopts: --tool=memcheck --vgdb=yes --vgdb-prefix=./vgdb-prefix-mcinvokeWS stderr_filter: filter_make_empty -prereq: test -f vgdb.invoker +prereq: test -f vgdb.invoker && ( ! ../tests/os_test freebsd || [ "$(sysctl -n debug.ptrace_attach_transparent 2>/dev/null || echo 0)" -eq 0 ] ) progB: invoker argsB: 10 --vgdb-prefix=./vgdb-prefix-mcinvokeWS --wait=60 -c v.wait 0 # if the --wait is not enough, the test will fail or block diff --git a/gdbserver_tests/nlcontrolc.vgtest b/gdbserver_tests/nlcontrolc.vgtest index 09edfcaba5..6c60972c21 100644 --- a/gdbserver_tests/nlcontrolc.vgtest +++ b/gdbserver_tests/nlcontrolc.vgtest @@ -13,7 +13,7 @@ args: 1000000000 0 100000 BSBSBSBS 1 vgopts: --tool=none --vgdb=yes --vgdb-error=0 --vgdb-prefix=./vgdb-prefix-nlcontrolc stderr_filter: filter_stderr # Bug 338633 nlcontrol hangs on arm64 currently. -prereq: test -e gdb -a -f vgdb.invoker && ! ../tests/os_test solaris +prereq: test -e gdb -a -f vgdb.invoker && ( ! ../tests/os_test solaris ) && ( ! ../tests/os_test freebsd || [ "$(sysctl -n debug.ptrace_attach_transparent 2>/dev/null || echo 0)" -eq 0 ] ) progB: gdb argsB: --quiet -l 60 --nx ./sleepers stdinB: nlcontrolc.stdinB.gdb diff --git a/gdbserver_tests/nlsigvgdb.vgtest b/gdbserver_tests/nlsigvgdb.vgtest index ad69a129f4..2e69109a29 100644 --- a/gdbserver_tests/nlsigvgdb.vgtest +++ b/gdbserver_tests/nlsigvgdb.vgtest @@ -7,7 +7,7 @@ prog: sleepers args: 1 10000000 0 -S-S-S-S 1 vgopts: --tool=none --vgdb=yes --vgdb-error=0 --vgdb-prefix=./vgdb-prefix-nlsigvgdb stderr_filter: filter_stderr -prereq: test -e gdb -a -f vgdb.invoker +prereq: test -e gdb -a -f vgdb.invoker && ( ! ../tests/os_test freebsd || [ "$(sysctl -n debug.ptrace_attach_transparent 2>/dev/null || echo 0)" -eq 0 ] ) envB: LC_ALL=C progB: gdb argsB: --quiet -l 60 --nx ./sleepers |