systemd-run -t -p MemoryMax=10M -p MemorySwapMax=0 -p MemoryZSwapMax=0 /bin/true
fi
+check_killed() {
+ local unit="${1:?}"
+ shift
+
+ systemctl "$@" status "$unit" || return 0 # Yay! The service has been expectedly killed.
+
+ # Workaround for the regression in kernel 6.12-rcX, explained in issue #32730.
+ if journalctl --no-hostname -k -t kernel --grep 'psi: inconsistent task state!'; then
+ echo "$unit is unexpectedly still alive, and inconsistency in PSI is reported by the kernel, skipping." >/skipped
+ exit 77
+ fi
+
+ return 1 # Huh? Something borked.
+}
+
test_basic() {
local cgroup_path="${1:?}"
shift
done
# testbloat should be killed and testchill should be fine
- if systemctl "$@" status TEST-55-OOMD-testbloat.service; then exit 42; fi
+ if ! check_killed TEST-55-OOMD-testbloat.service "$@"; then exit 42; fi
if ! systemctl "$@" status TEST-55-OOMD-testchill.service; then exit 24; fi
systemctl "$@" kill --signal=KILL TEST-55-OOMD-testbloat.service || :
# testmunch should be killed since testbloat had the avoid xattr on it
if ! systemctl status TEST-55-OOMD-testbloat.service; then exit 25; fi
- if systemctl status TEST-55-OOMD-testmunch.service; then exit 43; fi
+ if ! check_killed TEST-55-OOMD-testmunch.service; then exit 43; fi
if ! systemctl status TEST-55-OOMD-testchill.service; then exit 24; fi
systemctl kill --signal=KILL TEST-55-OOMD-testbloat.service || :
sleep 2
done
- if systemctl status TEST-55-OOMD-testmunch.service; then exit 44; fi
+ if ! check_killed TEST-55-OOMD-testmunch.service; then exit 44; fi
if ! systemctl status TEST-55-OOMD-testchill.service; then exit 23; fi
systemctl kill --signal=KILL TEST-55-OOMD-testmunch.service || :