summaryrefslogtreecommitdiffstats
path: root/tests/posix/exec_sigmask.sh
diff options
context:
space:
mode:
Diffstat (limited to 'tests/posix/exec_sigmask.sh')
-rw-r--r--tests/posix/exec_sigmask.sh16
1 files changed, 16 insertions, 0 deletions
diff --git a/tests/posix/exec_sigmask.sh b/tests/posix/exec_sigmask.sh
new file mode 100644
index 0000000..d1192a4
--- /dev/null
+++ b/tests/posix/exec_sigmask.sh
@@ -0,0 +1,16 @@
+# Regression test: restore the signal mask after fork()
+
+cd "$TEST"
+mkfifo p1 p2
+
+{
+ # Get the PID of `sh`
+ read -r pid <p1
+ # Send SIGTERM -- this will hang forever if signals are blocked
+ kill $pid
+} &
+
+# Write the `sh` PID to p1, then hang reading p2 until we're killed
+! invoke_bfs p1 -exec sh -c 'echo $$ >p1 && read -r _ <p2' {} + || fail
+
+wait