From 8f2a482ad9f6bfc8cf798562e72953e7fa1b9731 Mon Sep 17 00:00:00 2001 From: Michael Jones Date: Mon, 15 Jan 2024 20:26:31 -0600 Subject: [PATCH] Add github action that runs tests with compiler sanitizers (#1370) --- .github/workflows/compiler-sanitizers.yml | 49 +++++++++++++++++++++++ configure | 5 ++- 2 files changed, 52 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/compiler-sanitizers.yml diff --git a/.github/workflows/compiler-sanitizers.yml b/.github/workflows/compiler-sanitizers.yml new file mode 100644 index 0000000..59a6e2d --- /dev/null +++ b/.github/workflows/compiler-sanitizers.yml @@ -0,0 +1,49 @@ +name: compiler-sanitizers + +on: + push: + pull_request: + types: [ opened, reopened, synchronize ] + +jobs: + compiler-sanitizers: + runs-on: ubuntu-latest + + strategy: + matrix: + sanitizer: [ 'address,pointer-compare,pointer-subtract', 'thread' ] + + env: + CFLAGS: "-fno-omit-frame-pointer -fstack-protector-all -fsanitize=${{matrix.sanitizer}},bounds,enum -fsanitize-address-use-after-scope -fsanitize-address-use-after-return=always -fsanitize-recover=address -fsanitize-memory-track-origins=2" + CC: "clang" + ASAN_OPTIONS: "strict_string_checks=1:detect_stack_use_after_return=1:check_initialization_order=1:detect_leaks=0:detect_invalid_pointer_pairs=1:halt_on_error=0" + + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Install dependencies + run: | + sudo apt-get update + sudo apt install -y clang wget libevent-dev libssl-dev libpq-dev libmariadb-dev libsqlite3-dev libhiredis-dev libmongoc-dev libmicrohttpd-dev + wget https://github.com/digitalocean/prometheus-client-c/releases/download/v0.1.3/libprom-dev-0.1.3-Linux.deb + wget https://github.com/digitalocean/prometheus-client-c/releases/download/v0.1.3/libpromhttp-dev-0.1.3-Linux.deb + sudo apt install -y ./libprom-dev-0.1.3-Linux.deb ./libpromhttp-dev-0.1.3-Linux.deb + + - name: Configure + run: | + ./configure + + - name: Compile + run: | + make -j $(nproc) + + - name: Check + run: | + make check + + - name: Test + run: | + cd examples + ./run_tests.sh diff --git a/configure b/configure index e14f977..3ff83e1 100755 --- a/configure +++ b/configure @@ -608,10 +608,11 @@ if [ -z "${CC}" ] ; then exit 1 fi else - ${CC} ${TMPCPROGC} ${OSCFLAGS} -o ${TMPCPROGB} 2>>/dev/null + CC_OUTPUT=$(${CC} ${TMPCPROGC} ${OSCFLAGS} -o ${TMPCPROGB}) ER=$? if ! [ ${ER} -eq 0 ] ; then - ${ECHO_CMD} "ERROR: cannot use compiler ${CC} properly" + ${ECHO_CMD} "ERROR: cannot use compiler ${CC} properly." + ${ECHO_CMD} "${CC_OUTPUT}" cleanup exit 1 fi