From 9856296666730484f840948e5e5d040d5c4da814 Mon Sep 17 00:00:00 2001 From: Michal Nowak Date: Tue, 22 Nov 2022 11:51:23 +0100 Subject: [PATCH 1/2] Extract TSAN parsing code --- .gitlab-ci.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b9fdc1ac9a..496b2e04de 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -239,6 +239,9 @@ stages: - PYTHON="$(source bin/tests/system/conf.sh; echo $PYTHON)" - test -x "$PYTHON" +.parse_tsan: &parse_tsan + - find -name 'tsan.*' -exec "$PYTHON" util/parse_tsan.py {} \; + .check_readline_setup: &check_readline_setup - if [[ -n "${WITHOUT_READLINE}" ]]; then ! grep "^#define HAVE_READLINE" config.h; @@ -336,7 +339,7 @@ stages: after_script: - cat bin/tests/system/test-suite.log - *find_python - - find -name 'tsan.*' -exec "$PYTHON" util/parse_tsan.py {} \; + - *parse_tsan - > "$PYTHON" bin/tests/convert-trs-to-junit.py . > "$CI_PROJECT_DIR"/junit.xml artifacts: @@ -381,7 +384,7 @@ stages: <<: *unit_test_common after_script: - *find_python - - find -name 'tsan.*' -exec "$PYTHON" util/parse_tsan.py {} \; + - *parse_tsan - > "$PYTHON" bin/tests/convert-trs-to-junit.py . > "$CI_PROJECT_DIR"/junit.xml artifacts: From 4f23de554c89ffb001097f3c48879cb8dc71f3f9 Mon Sep 17 00:00:00 2001 From: Michal Nowak Date: Tue, 22 Nov 2022 10:27:17 +0100 Subject: [PATCH 2/2] Add ASAN- and TSAN-enabled respdiff jobs Neither of the new CI jobs can reliably pass at the moment; hence they are defined with "allow_failure: true" until issues in the code base are resolved. --- .gitlab-ci.yml | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 496b2e04de..1a1ddc9b67 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1258,6 +1258,36 @@ respdiff-short: script: - bash respdiff.sh -m /usr/lib/x86_64-linux-gnu/libjemalloc.so.2 -s named -q "${PWD}/10k_a.txt" -c 3 -w "${PWD}/rspworkdir" "${CI_PROJECT_DIR}" "/usr/local/respdiff-reference-bind/sbin/named" +respdiff-short:asan: + <<: *respdiff_job + <<: *default_triggering_rules + variables: + CC: gcc + CFLAGS: "${CFLAGS_COMMON} -Og -fsanitize=address,undefined" + LDFLAGS: "-fsanitize=address,undefined" + EXTRA_CONFIGURE: "--without-jemalloc" + MAX_DISAGREEMENTS_PERCENTAGE: "0.5" + script: + - bash respdiff.sh -s named -q "${PWD}/10k_a.txt" -c 3 -w "${PWD}/rspworkdir" "${CI_PROJECT_DIR}" "/usr/local/respdiff-reference-bind/sbin/named" + allow_failure: true + +respdiff-short:tsan: + <<: *respdiff_job + <<: *default_triggering_rules + variables: + CC: gcc + CFLAGS: "${CFLAGS_COMMON} -Og -fsanitize=thread" + LDFLAGS: "-fsanitize=thread" + EXTRA_CONFIGURE: "--enable-pthread-rwlock --without-jemalloc" + MAX_DISAGREEMENTS_PERCENTAGE: "0.5" + TSAN_OPTIONS: "${TSAN_OPTIONS_COMMON} external_symbolizer_path=/usr/bin/llvm-symbolizer" + script: + - bash respdiff.sh -s named -q "${PWD}/10k_a.txt" -c 3 -w "${PWD}/rspworkdir" "${CI_PROJECT_DIR}" "/usr/local/respdiff-reference-bind/sbin/named" + after_script: + - *find_python + - *parse_tsan + allow_failure: true + respdiff-long: <<: *respdiff_job <<: *api_schedules_tags_triggers_web_triggering_rules @@ -1268,6 +1298,36 @@ respdiff-long: script: - bash respdiff.sh -m /usr/lib/x86_64-linux-gnu/libjemalloc.so.2 -s named -q "${PWD}/100k_mixed.txt" -c 3 -w "${PWD}/rspworkdir" "${CI_PROJECT_DIR}" "/usr/local/respdiff-reference-bind/sbin/named" +respdiff-long:asan: + <<: *respdiff_job + <<: *api_schedules_tags_triggers_web_triggering_rules + variables: + CC: gcc + CFLAGS: "${CFLAGS_COMMON} -Og -fsanitize=address,undefined" + LDFLAGS: "-fsanitize=address,undefined" + EXTRA_CONFIGURE: "--without-jemalloc" + MAX_DISAGREEMENTS_PERCENTAGE: "0.5" + script: + - bash respdiff.sh -s named -q "${PWD}/100k_mixed.txt" -c 3 -w "${PWD}/rspworkdir" "${CI_PROJECT_DIR}" "/usr/local/respdiff-reference-bind/sbin/named" + allow_failure: true + +respdiff-long:tsan: + <<: *respdiff_job + <<: *api_schedules_tags_triggers_web_triggering_rules + variables: + CC: gcc + CFLAGS: "${CFLAGS_COMMON} -Og -fsanitize=thread" + LDFLAGS: "-fsanitize=thread" + EXTRA_CONFIGURE: "--enable-pthread-rwlock --without-jemalloc" + MAX_DISAGREEMENTS_PERCENTAGE: "0.5" + TSAN_OPTIONS: "${TSAN_OPTIONS_COMMON} external_symbolizer_path=/usr/bin/llvm-symbolizer" + script: + - bash respdiff.sh -s named -q "${PWD}/100k_mixed.txt" -c 3 -w "${PWD}/rspworkdir" "${CI_PROJECT_DIR}" "/usr/local/respdiff-reference-bind/sbin/named" + after_script: + - *find_python + - *parse_tsan + allow_failure: true + respdiff-long-third-party: <<: *respdiff_job <<: *api_schedules_tags_triggers_web_triggering_rules