@@ -183,6 +183,7 @@ jobs:
183183 version : 9
184184 c-path : /usr/bin/gcc-9
185185 cpp-path : /usr/bin/g++-9
186+ install : True
186187 - id : gcc-10
187188 name : gcc
188189 version : 10
@@ -395,13 +396,27 @@ jobs:
395396 # (Unfortunately cannot refer to earlier-assigned `env.` entries within subsequent ones.)
396397 install-dir : ${{ github.workspace }}/install/${{ matrix.build-test-cfg.conan-profile-build-type }}/usr/local
397398 # For the remaining env entries please see comments in Flow-IPC workflow counterpart. We use same techniques.
399+ # Update: (As of this writing this is only here, not in Flow-IPC counterpart, but that'll change; might want to
400+ # move the comment there then.) ASAN is somewhat different from the others, as it's really two sanitizers with
401+ # separate suppression files -- ASAN (actual safety checks) and LSAN (leak checks). So far we do *not* need
402+ # any suppressed ASAN warnings (ASAN false positives are known to be rare, so that makes sense), but there are
403+ # at least a couple minor, intentional mem-leaks, so we *do* need to suppress LSAN warnings at times. Therefore,
404+ # until/unless this changes, we will essentially treat LSAN-suppression as *the* suppression for our ASAN runs,
405+ # thus only requiring one suppression file type still. If/when that changes, the below will need to be made
406+ # more complicated, so that 2 suppression types per sanitizer are supported as opposed to just 1. Until then,
407+ # it's still simple. So that's why $ASAN_OPTIONS does not mention suppression, but $LSAN_OPTIONS does... and
408+ # it is the suppression file(s) (if any) under various `asan/` dirs in the source tree.
398409 san-suppress-cfg-file : ${{ github.workspace }}/install/${{ matrix.build-test-cfg.conan-profile-build-type }}/usr/local/bin/san_suppressions.cfg
399410 san-suppress-cfg-in-file1 : sanitize/${{ matrix.build-test-cfg.sanitizer-name }}/suppressions_${{ matrix.compiler.name }}.cfg
400411 san-suppress-cfg-in-file2 : sanitize/${{ matrix.build-test-cfg.sanitizer-name }}/suppressions_${{ matrix.compiler.name }}_${{ matrix.compiler.version }}.cfg
401412 setup-tests-env : |
402413 if [ '${{ matrix.build-test-cfg.sanitizer-name }}' = asan ]; then
414+ export SAN_SUPP=1
415+ export SAN_SUPP_CFG=${{ github.workspace }}/install/${{ matrix.build-test-cfg.conan-profile-build-type }}/usr/local/bin/san_suppressions.cfg
403416 export ASAN_OPTIONS='disable_coredump=0'
417+ export LSAN_OPTIONS="suppressions=$SAN_SUPP_CFG"
404418 echo "ASAN_OPTIONS = [$ASAN_OPTIONS]."
419+ echo "LSAN_OPTIONS = [$LSAN_OPTIONS]."
405420 elif [ '${{ matrix.build-test-cfg.sanitizer-name }}' = ubsan ]; then
406421 export SAN_SUPP=1
407422 export SAN_SUPP_CFG=${{ github.workspace }}/install/${{ matrix.build-test-cfg.conan-profile-build-type }}/usr/local/bin/san_suppressions.cfg
@@ -571,6 +586,8 @@ jobs:
571586 # and will grow. The techniques will still apply.
572587
573588 - name : Run test/demo [NetFlow echo]
589+ if : |
590+ !cancelled()
574591 run : |
575592 # Run test/demo [NetFlow echo].
576593 cd ${{ env.install-dir }}/bin
@@ -611,13 +628,15 @@ jobs:
611628 mkdir -p $OUT_DIR
612629 SUPP_DIR_A=${{ github.workspace }}/src
613630 # As of this writing there are TSAN suppressions for this test specifically. TODO: Revisit them; and then this.
631+ # Update: Now there are also ASAN (LSAN) suppressions. These are likely permanent as of this writing.
632+ # Reminder: the following construction handles suppression file(s) from *any* relevant sanitizer type (if any).
614633 SUPP_DIR_OWN=${{ github.workspace }}/test/suite/unit_test
615634 { cat $SUPP_DIR_A/${{ env.san-suppress-cfg-in-file1 }} $SUPP_DIR_A/${{ env.san-suppress-cfg-in-file2 }} \
616635 $SUPP_DIR_OWN/${{ env.san-suppress-cfg-in-file1 }} $SUPP_DIR_OWN/${{ env.san-suppress-cfg-in-file2 }} \
617636 > ${{ env.san-suppress-cfg-file }} 2> /dev/null; } || true
618637 ${{ env.setup-tests-env }}
619638 ${{ env.setup-run-env }}
620- # Sensitive benchmarks in this setting should run and be warned about it they "fail," but they should not
639+ # Sensitive benchmarks in this setting should run and be warned about, if they "fail," but they should not
621640 # fail the test.
622641 $RUN_IT --do-not-fail-benchmarks > $OUT_DIR/console.log 2>&1
623642
0 commit comments