-
Notifications
You must be signed in to change notification settings - Fork 2.3k
Description
Description
A poststop hook is not run if a poststart hook fails.
crun and runc do not have the same behaviour.
I first opened an issue in the crun project:
Steps to reproduce the issue
On a Fedora 43 system do the following steps:
- Create hooks dir
mkdir $HOME/hooks.d - Create policy file
$HOME/hooks.d/foobar1.jsoncontaining{ "version": "1.0.0", "hook": { "path": "/bin/false" }, "when": { "annotations": { "^myannotation$": "yes" } }, "stages": ["poststart"] } - Create policy file
$HOME/hooks.d/foobar2.jsoncontaining{ "version": "1.0.0", "hook": { "path": "/bin/touch", "args": ["/bin/touch", "/tmp/poststop-created"] }, "when": { "annotations": { "^myannotation$": "yes" } }, "stages": ["poststop"] } - Create file
$HOME/test.bashcontaining#!/bin/bash set -o nounset runtime=$1 podman \ --runtime $runtime \ --hooks-dir ~/hooks.d \ run \ --rm \ --annotation myannotation=yes \ docker.io/library/alpine \ sh -c "sleep 1 && echo hello && sleep 1" - Test with
crun(that was built from the git main branch a few days ago: git commit d268d5375bea4ba692cd8e96040a770da78868e5)result: The file$ ls -l /tmp/poststop-created ls: cannot access '/tmp/poststop-created': No such file or directory $ bash test.bash /tmp/crun/crun 2026-03-14T08:25:31.178231Z: error executing hook `/bin/false` (exit code: 1) Error: `/tmp/crun/crun start a3035173b6311e002171be689725f2e63f23f31d4c329cf9e4b4cb38d76dc224` failed: exit status 1 $ ls -l /tmp/poststop-created -rw-r--r--. 1 test test 0 Mar 14 09:25 /tmp/poststop-created $/tmp/poststop-createdwas created - Test with
runc(version 1.5.0-rc.1). The executable was installed to/tmp/runc.amd64result: The file$ ls -l /tmp/poststop-created ls: cannot access '/tmp/poststop-created': No such file or directory $ bash test.bash /tmp/runc.amd64 Error: OCI runtime error: /tmp/runc.amd64: time="2026-03-17T17:38:38+01:00" level=error msg="runc create failed: error running poststart hook #0: exit status 1, stdout: , stderr: " $ ls -l /tmp/poststop-created ls: cannot access '/tmp/poststop-created': No such file or directory $/tmp/poststop-createdwas not created
Describe the results you received and expected
In step 6, I would have expected the file /tmp/poststop-created to be created.
What version of runc are you using?
runc version 1.5.0-rc.1
commit: v1.5.0-rc.1-0-g5d2588d3
spec: 1.3.0
go: go1.25.8
libseccomp: 2.6.0
Host OS information
NAME="Fedora Linux"
VERSION="43 (Forty Three)"
RELEASE_TYPE=stable
ID=fedora
VERSION_ID=43
VERSION_CODENAME=""
PRETTY_NAME="Fedora Linux 43 (Forty Three)"
ANSI_COLOR="0;38;2;60;110;180"
LOGO=fedora-logo-icon
CPE_NAME="cpe:/o:fedoraproject:fedora:43"
DEFAULT_HOSTNAME="fedora"
HOME_URL="https://fedoraproject.org/"
DOCUMENTATION_URL="https://docs.fedoraproject.org/en-US/fedora/f43/"
SUPPORT_URL="https://ask.fedoraproject.org/"
BUG_REPORT_URL="https://bugzilla.redhat.com/"
REDHAT_BUGZILLA_PRODUCT="Fedora"
REDHAT_BUGZILLA_PRODUCT_VERSION=43
REDHAT_SUPPORT_PRODUCT="Fedora"
REDHAT_SUPPORT_PRODUCT_VERSION=43
SUPPORT_END=2026-12-02
Host kernel information
Linux asus 6.19.8-200.fc43.x86_64 #1 SMP PREEMPT_DYNAMIC Fri Mar 13 22:06:06 UTC 2026 x86_64 GNU/Linux