test: drop any memory limits from units when running with sanitizers

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
This commit is contained in:
Frantisek Sumsal
2026-04-25 18:49:40 +02:00
parent a8400c8f1a
commit e3aaf3d76e
+6 -2
View File
@@ -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