]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
test: drop any memory limits from units when running with sanitizers
authorFrantisek Sumsal <frantisek@sumsal.cz>
Fri, 24 Apr 2026 12:17:23 +0000 (14:17 +0200)
committerFrantisek Sumsal <frantisek@sumsal.cz>
Sat, 25 Apr 2026 16:49:40 +0000 (18:49 +0200)
As the memory usage under sanitizers is quite unpredictable.

This is currently relevant mainly for Polkit, as it introduced memory
limits for its polkitd.service unit in the latest version [0] which are
very easy to trigger when running under sanitizers (as polkitd depends
on libsystemd which brings ASan into polkitd's address space).

[0] https://github.com/polkit-org/polkit/commit/7d9c06c58a957ee3f2a4383ade6f207b05207e3e

mkosi/mkosi.sanitizers/mkosi.postinst

index 988a604c63eb055cd92bf53f5f3a5bc61f7b0e67..a59b5d047855202e4b4f11e1e664ad505d4ab411 100755 (executable)
@@ -9,13 +9,17 @@ if [[ ! -f "$BUILDROOT/$LIBSYSTEMD" ]]; then
     exit 0
 fi
 
-# ASAN and syscall filters aren't compatible with each other.
+# ASAN and syscall filters aren't compatible with each other. Also, drop any memory limits
+# as these are quite unpredictable when running under sanitizers.
 find "$BUILDROOT"/usr "$BUILDROOT"/etc -name '*.service' -type f | while read -r unit; do
-    if grep -q -e MemoryDeny -e SystemCall "$unit" ; then
+    if grep -q -e MemoryDeny -e MemoryMax -e MemoryHigh -e MemorySwapMax -e SystemCall "$unit" ; then
         mkdir -p "$unit.d"
         cat > "$unit.d/sanitizer-compat.conf" <<EOF
 [Service]
 MemoryDenyWriteExecute=no
+MemoryMax=
+MemoryHigh=
+MemorySwapMax=
 SystemCallFilter=
 EOF
     fi