diff --git a/.travis.yml b/.travis.yml index 724504568e..ce5d099660 100644 --- a/.travis.yml +++ b/.travis.yml @@ -36,6 +36,24 @@ jobs: after_script: - $CI_MANAGERS/fedora.sh CLEANUP + - name: Fedora Rawhide (ASan+UBSan) + language: bash + env: + - FEDORA_RELEASE="rawhide" + - CONT_NAME="systemd-fedora-$FEDORA_RELEASE" + - DOCKER_EXEC="docker exec -ti $CONT_NAME" + before_install: + - sudo apt-get -y -o Dpkg::Options::="--force-confnew" install docker-ce + - docker --version + install: + - $CI_MANAGERS/fedora.sh SETUP + script: + - set -e + - $CI_MANAGERS/fedora.sh RUN_ASAN + - set +e + after_script: + - $CI_MANAGERS/fedora.sh CLEANUP + - stage: Coverity language: bash env: diff --git a/src/test/test-sd-hwdb.c b/src/test/test-sd-hwdb.c index b67a8537bf..17ca6a0e27 100644 --- a/src/test/test-sd-hwdb.c +++ b/src/test/test-sd-hwdb.c @@ -5,7 +5,7 @@ #include "tests.h" static int test_failed_enumerate(void) { - _cleanup_(sd_hwdb_unrefp) sd_hwdb *hwdb; + _cleanup_(sd_hwdb_unrefp) sd_hwdb *hwdb = NULL; const char *key, *value; int r; @@ -29,7 +29,7 @@ static int test_failed_enumerate(void) { "evdev:atkbd:dmi:bvnXXX:bvrYYY:bdZZZ:svnDellXXX:pnYYY" static void test_basic_enumerate(void) { - _cleanup_(sd_hwdb_unrefp) sd_hwdb *hwdb; + _cleanup_(sd_hwdb_unrefp) sd_hwdb *hwdb = NULL; const char *key, *value; size_t len1 = 0, len2 = 0; int r; diff --git a/travis-ci/managers/fedora.sh b/travis-ci/managers/fedora.sh index 3ee1105067..742b7c94a4 100755 --- a/travis-ci/managers/fedora.sh +++ b/travis-ci/managers/fedora.sh @@ -9,13 +9,13 @@ # export CONT_NAME="my-fancy-container" # travis-ci/managers/fedora.sh SETUP RUN CLEANUP -PHASES=(${@:-SETUP RUN CLEANUP}) +PHASES=(${@:-SETUP RUN RUN_ASAN CLEANUP}) FEDORA_RELEASE="${FEDORA_RELEASE:-rawhide}" CONT_NAME="${CONT_NAME:-fedora-$FEDORA_RELEASE-$RANDOM}" DOCKER_EXEC="${DOCKER_EXEC:-docker exec -it $CONT_NAME}" DOCKER_RUN="${DOCKER_RUN:-docker run}" REPO_ROOT="${REPO_ROOT:-$PWD}" -ADDITIONAL_DEPS=(dnf-plugins-core python2 iputils hostname libasan) +ADDITIONAL_DEPS=(dnf-plugins-core python2 iputils hostname libasan python3-pyparsing python3-evdev libubsan) function info() { echo -e "\033[33;1m$1\033[0m" @@ -47,9 +47,17 @@ for phase in "${PHASES[@]}"; do # Build systemd $DOCKER_EXEC meson -Dslow-tests=true build $DOCKER_EXEC ninja -v -C build - # Run 'make check' $DOCKER_EXEC ninja -C build test ;; + RUN_ASAN) + $DOCKER_EXEC git clean -dxff + $DOCKER_EXEC meson -Db_sanitize=address,undefined build + $DOCKER_EXEC ninja -v -C build + $DOCKER_EXEC sh -c "printf '#!/bin/sh\necho The test is failing under ASan, skipping; exit 77' >/build/build/test-capability" + + # Never remove halt_on_error from UBSAN_OPTIONS. See https://github.com/systemd/systemd/commit/2614d83aa06592aedb. + $DOCKER_EXEC sh -c "UBSAN_OPTIONS=print_stacktrace=1:print_summary=1:halt_on_error=1 meson test --timeout-multiplier=3 -C ./build/ --print-errorlogs" + ;; CLEANUP) info "Cleanup phase" docker stop $CONT_NAME