[openssh-commits] [openssh] 01/01: Invoke EXIT handler early when using Valgrind.

git+noreply at mindrot.org git+noreply at mindrot.org
Wed Jan 19 15:44:16 AEDT 2022


This is an automated email from the git hooks/post-receive script.

dtucker pushed a commit to branch master
in repository openssh.

commit 20da6ed136dd76e6a0b229ca3036ef9c7c7ef798
Author: Darren Tucker <dtucker at dtucker.net>
Date:   Wed Jan 19 15:37:39 2022 +1100

    Invoke EXIT handler early when using Valgrind.
    
    When using Valgrind, we need to wait for all invoked programs to
    complete before checking their valgrind logs.  Some tests, notably
    agent-restrict, set an EXIT trap handler to clean up things like
    ssh-agent, but those do not get invoked until test-exec.sh exits.
    This causes the Valgrind wait to deadlock, so if present invoke
    the EXIT handler before checking the Valgrind logs.
---
 regress/test-exec.sh | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/regress/test-exec.sh b/regress/test-exec.sh
index 361a0653..7aeead5c 100644
--- a/regress/test-exec.sh
+++ b/regress/test-exec.sh
@@ -718,6 +718,19 @@ start_sshd ()
 cleanup
 
 if [ "x$USE_VALGRIND" != "x" ]; then
+	# If there is an EXIT trap handler, invoke it now.
+	# Some tests set these to clean up processes such as ssh-agent.  We
+	# need to wait for all valgrind processes to complete so we can check
+	# their logs, but since the EXIT traps are not invoked until
+	# test-exec.sh exits, waiting here will deadlock.
+	# This is not very portable but then neither is valgrind itself.
+	exithandler=$(trap -p | awk -F "'" '/EXIT$/{print $2}')
+	if [ "x${exithandler}" != "x" ]; then
+		verbose invoking EXIT trap handler early: ${exithandler}
+		${exithandler}
+		trap '' EXIT
+	fi
+
 	# wait for any running process to complete
 	wait; sleep 1
 	VG_RESULTS=$(find $OBJ/valgrind-out -type f -print)

-- 
To stop receiving notification emails like this one, please contact
djm at mindrot.org.


More information about the openssh-commits mailing list