summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDamien Miller <djm@mindrot.org>2020-05-14 12:22:09 +1000
committerDamien Miller <djm@mindrot.org>2020-05-14 12:24:24 +1000
commit3ab6fccc3935e9b778ff52f9c8d40f215d58e01d (patch)
tree826ffb5725865c2d948d77b5ac948f9951ed3673
parentf700d316c6b15a9cfbe87230d2dca81a5d916279 (diff)
prefer ln to cp for temporary copy of sshd
I saw failures on the reexec fallback test on Darwin 19.4 where fork()ed children of a process that had it's executable removed would instantly fail. Using ln to preserve the inode avoids this.
-rw-r--r--regress/reexec.sh5
1 files changed, 4 insertions, 1 deletions
diff --git a/regress/reexec.sh b/regress/reexec.sh
index 2192456c..8966ba52 100644
--- a/regress/reexec.sh
+++ b/regress/reexec.sh
@@ -9,7 +9,10 @@ SSHD_COPY=$OBJ/sshd
# Start a sshd and then delete it
start_sshd_copy ()
{
- cp $SSHD_ORIG $SSHD_COPY
+ # NB. prefer ln to cp here. On some OSX 19.4 configurations,
+ # djm has seen failure after fork() when the executable image
+ # has been removed from the filesystem.
+ ln $SSHD_ORIG $SSHD_COPY || cp $SSHD_ORIG $SSHD_COPY
SSHD=$SSHD_COPY
start_sshd
SSHD=$SSHD_ORIG