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..."
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
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
- 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