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.
This commit is contained in:
parent
ad2e0580c8
commit
20da6ed136
|
@ -718,6 +718,19 @@ start_sshd ()
|
||||||
cleanup
|
cleanup
|
||||||
|
|
||||||
if [ "x$USE_VALGRIND" != "x" ]; then
|
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 for any running process to complete
|
||||||
wait; sleep 1
|
wait; sleep 1
|
||||||
VG_RESULTS=$(find $OBJ/valgrind-out -type f -print)
|
VG_RESULTS=$(find $OBJ/valgrind-out -type f -print)
|
||||||
|
|
Loading…
Reference in New Issue