# Pass run-time flags to AddressSanitizer to get core dumps on error.
ASAN_OPTIONS_COMMON: abort_on_error=1:disable_coredump=0:unmap_shadow_on_exit=1
- TSAN_OPTIONS_COMMON: "second_deadlock_stack=1 history_size=7 log_exe_name=true log_path=tsan external_symbolizer_path=/usr/lib/llvm-12/bin/llvm-symbolizer"
TARBALL_COMPRESSOR: gzip
TARBALL_EXTENSION: gz
expire_in: "1 day"
when: always
-.system_test_tsan: &system_test_tsan_job
- <<: *system_test_common
- allow_failure: true
- after_script:
- - find bin -name 'tsan.*' -exec python3 util/parse_tsan.py {} \;
- artifacts:
- expire_in: "1 day"
- untracked: true
- when: on_failure
-
.kyua_report: &kyua_report_html
- kyua --logfile /dev/null report-html
--force
expire_in: "1 day"
when: always
-.unit_test_tsan: &unit_test_tsan_job
- <<: *unit_test_common
- after_script:
- - *kyua_report_html
- - for f in tsan.* ; do test -f "$f" && python3 util/parse_tsan.py "$f" ; done
- - find lib -name 'tsan.*' -exec python3 util/parse_tsan.py {} \;
- artifacts:
- expire_in: "1 day"
- paths:
- - lib/*/tests/tsan.*
- - tsan/
- - kyua.log
- - kyua.results
- - kyua_html/
- when: on_failure
-
### Job Definitions
# Jobs in the precheck stage
- job: clang:asan
artifacts: true
-# Jobs for builds with TSAN enabled
-
-gcc:tsan:
- <<: *base_image
- <<: *build_job
- variables:
- CC: gcc
- CFLAGS: "${CFLAGS_COMMON} -Wno-stringop-overread -ggdb -O2 -fsanitize=thread -DISC_MEM_USE_INTERNAL_MALLOC=0"
- LDFLAGS: "-fsanitize=thread"
- EXTRA_CONFIGURE: "--with-libidn2 PKG_CONFIG_PATH=/usr/local/lib/pkgconfig"
-
-system:gcc:tsan:
- variables:
- TSAN_OPTIONS: ${TSAN_OPTIONS_COMMON}
- <<: *base_image
- <<: *system_test_tsan_job
- needs:
- - job: gcc:tsan
- artifacts: true
-
-unit:gcc:tsan:
- variables:
- TSAN_OPTIONS: ${TSAN_OPTIONS_COMMON} suppressions=$CI_PROJECT_DIR/tsan-suppressions.txt
- <<: *base_image
- <<: *unit_test_tsan_job
- needs:
- - job: gcc:tsan
- artifacts: true
-
-clang:tsan:
- <<: *base_image
- <<: *build_job
- variables:
- CC: "${CLANG}"
- CFLAGS: "${CFLAGS_COMMON} -ggdb -O2 -fsanitize=thread -DISC_MEM_USE_INTERNAL_MALLOC=0"
- LDFLAGS: "-fsanitize=thread"
- EXTRA_CONFIGURE: "--with-libidn2 --disable-warn-error PKG_CONFIG_PATH=/opt/tsan/lib/pkgconfig"
-
-system:clang:tsan:
- variables:
- TSAN_OPTIONS: ${TSAN_OPTIONS_COMMON}
- <<: *base_image
- <<: *system_test_tsan_job
- needs:
- - job: clang:tsan
- artifacts: true
-
-unit:clang:tsan:
- variables:
- TSAN_OPTIONS: ${TSAN_OPTIONS_COMMON} suppressions=$CI_PROJECT_DIR/tsan-suppressions.txt
- <<: *base_image
- <<: *unit_test_tsan_job
- needs:
- - job: clang:tsan
- artifacts: true
-
# Jobs for Clang builds on FreeBSD 12 (amd64)
clang:freebsd12:amd64: