Skip to content

Commit

Permalink
Rollback bazelbuild#14510 because it causes remote test execution to …
Browse files Browse the repository at this point in the history
…fail

When the parent process is run as a different user to the test itself (as can happen in some remote build environments, such as buildbarn) using `kill -0 $PPID` fails, causing the test to be prematurely killed.

This PR rolls back the (nicer, cleaner, not always working) fix and replaces it with the (less nice, less clean, more often working) check that was there before.

Tested with a local build against buildbarn.

Closes bazelbuild#17147.

PiperOrigin-RevId: 500691976
Change-Id: Ife55db5c1ed88d40ba502257ce9b679b04eeb179
shs96c authored and copybara-github committed Jan 9, 2023

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
1 parent afa2500 commit f090433
Showing 1 changed file with 12 additions and 3 deletions.
15 changes: 12 additions & 3 deletions tools/test/test-setup.sh
Original file line number Diff line number Diff line change
@@ -331,9 +331,18 @@ fi
childPid=$!

# Cleanup helper
# Assume that we don't have drastically reduced abilities to communicate signals
# to our parent process. kill()ability means existence.
( while kill -0 $PPID &> /dev/null; do # magic 0 sigspec tests deliverability only
# It would be nice to use `kill -0 $PPID` here, but when whatever called this
# is running as a different user (as happens in remote execution) that will
# return an error, causing us to prematurely reap a running test.
( if ! (ps -p $$ &> /dev/null || [ "`pgrep -a -g $$ 2> /dev/null`" != "" ] ); then
# `ps` is known to be unrunnable in the darwin sandbox-exec environment due
# to being a set-uid root program. pgrep exists in most environments, but not
# universally. In the event that we find ourselves running in an environment
# where *neither* exists, we have no reliable way to check if our parent is
# still alive - so simply disable this cleanup routine entirely.
exit 0
fi
while ps -p $$ &> /dev/null || [ "`pgrep -a -g $$ 2> /dev/null`" != "" ]; do
sleep 10
done
# Parent process not found - we've been abandoned! Clean up test processes.

0 comments on commit f090433

Please sign in to comment.