From e31bdc2f50312a02e819bbd684926611dbae11b8 Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Sat, 18 Oct 2025 09:47:47 +0100 Subject: [PATCH] [Test] Improve ASAN configuration and fix logs order - Add proper ASAN_OPTIONS: quarantine_size_mb, malloc_context_size, fast_unwind_on_malloc - Add exitcode=0 to prevent ASAN from failing tests - Collect Docker logs before uploading - Add debug output for ASAN env vars and /data contents --- .github/workflows/integration-test.yml | 24 ++++++++++++++++++------ test/integration/docker-compose.yml | 6 ++++-- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/.github/workflows/integration-test.yml b/.github/workflows/integration-test.yml index 00b02ae6ec..36e8cf7721 100644 --- a/.github/workflows/integration-test.yml +++ b/.github/workflows/integration-test.yml @@ -253,6 +253,18 @@ jobs: if: always() working-directory: test/integration run: | + # Debug: Check if ASAN environment is set in container + echo "=== Checking ASAN configuration in container ===" + docker compose exec -T rspamd sh -c 'echo ASAN_OPTIONS=$ASAN_OPTIONS; echo LSAN_OPTIONS=$LSAN_OPTIONS' + + # Debug: Check what files exist in /data + echo "=== Files in /data inside container ===" + docker compose exec -T rspamd ls -la /data/ + + # Debug: Check what files exist in data on host + echo "=== Files in data/ on host ===" + ls -la data/ + # Fix permissions on ASAN logs created by Docker sudo chmod -R 644 data/asan.log* 2>/dev/null || true ./scripts/check-asan-logs.sh || echo "Memory issues detected, but continuing..." @@ -269,6 +281,12 @@ jobs: test/integration/data/*.log retention-days: 7 + - name: Collect Docker logs + if: always() + working-directory: test/integration + run: | + docker compose logs > docker-compose-logs.txt + - name: Upload Docker logs if: always() uses: actions/upload-artifact@v4 @@ -279,12 +297,6 @@ jobs: retention-days: 7 continue-on-error: true - - name: Collect Docker logs - if: always() - working-directory: test/integration - run: | - docker compose logs > docker-compose-logs.txt - - name: Stop Docker Compose if: always() working-directory: test/integration diff --git a/test/integration/docker-compose.yml b/test/integration/docker-compose.yml index 323607df24..49bf871815 100644 --- a/test/integration/docker-compose.yml +++ b/test/integration/docker-compose.yml @@ -41,8 +41,10 @@ services: - RSPAMD_REDIS_ADDR=redis - RSPAMD_REDIS_PORT=6379 # AddressSanitizer configuration for multiple processes - - ASAN_OPTIONS=detect_leaks=1:halt_on_error=0:abort_on_error=0:print_stats=1:log_path=/data/asan.log - - LSAN_OPTIONS=suppressions=/etc/rspamd/lsan.supp:print_suppressions=0 + # halt_on_error=0 and abort_on_error=0 allow collecting all errors + # exitcode=0 prevents ASAN from returning non-zero exit code + - ASAN_OPTIONS=detect_leaks=1:halt_on_error=0:abort_on_error=0:exitcode=0:print_stats=1:log_path=/data/asan.log:quarantine_size_mb=2048:malloc_context_size=20:fast_unwind_on_malloc=0 + - LSAN_OPTIONS=suppressions=/etc/rspamd/lsan.supp:print_suppressions=0:exitcode=0 healthcheck: test: [ "CMD-SHELL", "pidof rspamd > /dev/null || exit 1" ] interval: 10s -- 2.47.3