diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1f3af92c0..745ddaa96 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -240,123 +240,10 @@ jobs: for test_file in $(find cproducer.dir kvsCommonCurl.dir kvsCommonLws.dir -name '*.gcno'); do gcov $test_file; done bash <(curl -s https://codecov.io/bash) - address-sanitizer: - runs-on: ubuntu-latest - permissions: - id-token: write - contents: read - env: - CC: clang - CXX: clang++ - AWS_KVS_LOG_LEVEL: 2 - steps: - - name: Clone repository - uses: actions/checkout@v3 - - name: Build repository - run: | - mkdir build && cd build - cmake .. -DBUILD_TEST=TRUE -DADDRESS_SANITIZER=TRUE -DBUILD_COMMON_LWS=TRUE - make - - name: Configure AWS Credentials - uses: aws-actions/configure-aws-credentials@v4 - with: - role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} - role-session-name: ${{ secrets.AWS_ROLE_SESSION_NAME }} - aws-region: ${{ secrets.AWS_REGION }} - role-duration-seconds: 10800 - - name: Run tests - run: | - cd build - ulimit -c unlimited -S - timeout --signal=SIGABRT 150m ./tst/producer_test --gtest_break_on_failure - - undefined-behavior-sanitizer: - runs-on: ubuntu-latest - permissions: - id-token: write - contents: read - env: - CC: clang - CXX: clang++ - AWS_KVS_LOG_LEVEL: 2 - steps: - - name: Clone repository - uses: actions/checkout@v3 - - name: Build repository - run: | - mkdir build && cd build - cmake .. -DBUILD_TEST=TRUE -DUNDEFINED_BEHAVIOR_SANITIZER=TRUE -DBUILD_COMMON_LWS=TRUE - make - - name: Configure AWS Credentials - uses: aws-actions/configure-aws-credentials@v4 - with: - role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} - role-session-name: ${{ secrets.AWS_ROLE_SESSION_NAME }} - aws-region: ${{ secrets.AWS_REGION }} - role-duration-seconds: 10800 - - name: Run tests - run: | - cd build - ulimit -c unlimited -S - timeout --signal=SIGABRT 150m ./tst/producer_test --gtest_break_on_failure - - # memory-sanitizer: - # runs-on: ubuntu-20.04 - # permissions: - # id-token: write - # contents: read - # env: - # CC: clang - # CXX: clang++ - # AWS_KVS_LOG_LEVEL: 2 - # steps: - # - name: Clone repository - # uses: actions/checkout@v3 - # - name: Configure AWS Credentials - # uses: aws-actions/configure-aws-credentials@v4 - # with: - # role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} - # role-session-name: ${{ secrets.AWS_ROLE_SESSION_NAME }} - # aws-region: ${{ secrets.AWS_REGION }} - # - name: Build repository - # run: | - # mkdir build && cd build - # cmake .. -DBUILD_TEST=TRUE -DMEMORY_SANITIZER=TRUE -DBUILD_COMMON_LWS=TRUE - # make - # ulimit -c unlimited -S - # timeout --signal=SIGABRT 150m ./tst/producer_test --gtest_break_on_failure - - # thread-sanitizer: - # runs-on: ubuntu-20.04 - # permissions: - # id-token: write - # contents: read - # env: - # CC: clang - # CXX: clang++ - # AWS_KVS_LOG_LEVEL: 2 - # steps: - # - name: Clone repository - # uses: actions/checkout@v3 - # - name: Configure AWS Credentials - # uses: aws-actions/configure-aws-credentials@v4 - # with: - # role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} - # role-session-name: ${{ secrets.AWS_ROLE_SESSION_NAME }} - # aws-region: ${{ secrets.AWS_REGION }} - # - name: Build repository - # run: | - # mkdir build && cd build - # cmake .. -DBUILD_TEST=TRUE -DTHREAD_SANITIZER=TRUE -DBUILD_COMMON_LWS=TRUE - # make - # - name: Run tests - # run: | - # cd build - # ulimit -c unlimited -S - # timeout --signal=SIGABRT 150m ./tst/producer_test --gtest_break_on_failure - ubuntu-gcc: runs-on: ubuntu-latest + container: + image: public.ecr.aws/ubuntu/ubuntu:22.04_stable env: AWS_KVS_LOG_LEVEL: 2 CC: gcc @@ -366,16 +253,16 @@ jobs: contents: read steps: - name: Clone repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Install dependencies run: | - sudo apt clean && sudo apt update - sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6' + apt-get update + apt-get install -y git build-essential automake pkg-config - name: Build repository run: | mkdir build && cd build - cmake .. -DBUILD_TEST=TRUE - make + cmake .. -DBUILD_TEST=ON + make -j$(nproc) - name: Configure AWS Credentials uses: aws-actions/configure-aws-credentials@v4 with: @@ -386,7 +273,6 @@ jobs: - name: Run tests run: | cd build - ulimit -c unlimited -S timeout --signal=SIGABRT 150m ./tst/producer_test --gtest_break_on_failure windows-msvc: @@ -479,23 +365,35 @@ jobs: linux-build-gcc-static: runs-on: ubuntu-latest + container: + image: public.ecr.aws/ubuntu/ubuntu:22.04_stable steps: - name: Clone repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 + - name: Install dependencies + run: | + apt-get update + apt-get install -y git cmake build-essential automake pkg-config - name: Build Repository run: | mkdir build && cd build cmake .. -DBUILD_STATIC=ON - make + make -j$(nproc) linux-thread-size-check: runs-on: ubuntu-latest + container: + image: public.ecr.aws/ubuntu/ubuntu:22.04_stable permissions: id-token: write contents: read steps: - name: Clone repository uses: actions/checkout@v3 + - name: Install dependencies + run: | + apt-get update + apt-get install -y git cmake build-essential automake pkg-config - name: Configure AWS Credentials uses: aws-actions/configure-aws-credentials@v4 with: diff --git a/.github/workflows/linux-sanitizers.yml b/.github/workflows/linux-sanitizers.yml new file mode 100644 index 000000000..95b88506b --- /dev/null +++ b/.github/workflows/linux-sanitizers.yml @@ -0,0 +1,70 @@ +name: Linux sanitizers + +on: + push: + branches: + - develop + - master + pull_request: + branches: + - develop + - master + +jobs: + linux-sanitizers: + strategy: + matrix: + sanitizer: + - ADDRESS_SANITIZER + - UNDEFINED_BEHAVIOR_SANITIZER + # - THREAD_SANITIZER + # - MEMORY_SANITIZER + config: + - name: With Common LWS + cmake_flags: "-DBUILD_TEST=ON -DBUILD_COMMON_LWS=ON" + + fail-fast: false + + runs-on: ubuntu-latest + container: + image: public.ecr.aws/ubuntu/ubuntu:22.04_stable + + timeout-minutes: 80 + + env: + CC: clang + CXX: clang++ + AWS_KVS_LOG_LEVEL: 2 + + permissions: + id-token: write + contents: read + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Install dependencies + run: | + apt-get update + apt-get -y install git build-essential automake pkg-config cmake clang + + - name: Build repository - ${{ matrix.config.name }} + run: | + mkdir -p build + cd build + cmake .. -D${{ matrix.sanitizer }}=ON ${{ matrix.config.cmake_flags }} + make -j$(nproc) + + - name: Configure AWS Credentials + uses: aws-actions/configure-aws-credentials@v4 + with: + role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} + role-session-name: ${{ secrets.AWS_ROLE_SESSION_NAME }} + aws-region: ${{ secrets.AWS_REGION }} + role-duration-seconds: 10800 + + - name: Run tests - ${{ matrix.config.name }} + working-directory: ./build + run: | + timeout --signal=SIGABRT 150m ./tst/kvspic_test --gtest_break_on_failure diff --git a/src/source/CurlApiCallbacks.c b/src/source/CurlApiCallbacks.c index 9c3373f32..51c9d6b06 100644 --- a/src/source/CurlApiCallbacks.c +++ b/src/source/CurlApiCallbacks.c @@ -151,7 +151,7 @@ STATUS createCurlApiCallbacks(PCallbacksProvider pCallbacksProvider, PCHAR regio DLOGD("Initializing curl"); CHK(0 == curl_global_init(CURL_GLOBAL_ALL), STATUS_CURL_LIBRARY_INIT_FAILED); DLOGD("Successfully initialized curl"); - + // Not in shutdown ATOMIC_STORE_BOOL(&pCurlApiCallbacks->shutdown, FALSE);