executor: don't duplicate FD array to avoid double closing
Just use ExecParam directly, as these are all internal to sd-exec now anyway. Avoids double close when execution fails after FDs are set up for inheritance and were already re-arranged. Fixes https://github.com/systemd/systemd/issues/30412
This commit is contained in:
committed by
Luca Boccassi
parent
a9235a9488
commit
1eeaa93de3
Executable
+31
@@ -0,0 +1,31 @@
|
||||
#!/usr/bin/env bash
|
||||
# SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
set -eux
|
||||
set -o pipefail
|
||||
|
||||
# Check that socket FDs are not double closed on error: https://github.com/systemd/systemd/issues/30412
|
||||
|
||||
mkdir -p /run/systemd/system
|
||||
|
||||
rm -f /tmp/badbin
|
||||
touch /tmp/badbin
|
||||
chmod 744 /tmp/badbin
|
||||
|
||||
cat >/run/systemd/system/badbin_assert.service <<EOF
|
||||
[Service]
|
||||
ExecStart=/tmp/badbin
|
||||
Restart=never
|
||||
EOF
|
||||
|
||||
cat >/run/systemd/system/badbin_assert.socket <<EOF
|
||||
[Socket]
|
||||
ListenStream=@badbin_assert.socket
|
||||
EOF
|
||||
|
||||
systemctl daemon-reload
|
||||
systemctl start badbin_assert.socket
|
||||
|
||||
socat - ABSTRACT-CONNECT:badbin_assert.socket
|
||||
|
||||
timeout 10 sh -c 'while systemctl is-active badbin_assert.service; do sleep .5; done'
|
||||
[[ "$(systemctl show -P ExecMainStatus badbin_assert.service)" == 203 ]]
|
||||
Reference in New Issue
Block a user