From 2c6ef60a81910597635913e4c3a19f3e235fe58b Mon Sep 17 00:00:00 2001 From: Waqar Ahmed Khan Date: Thu, 19 Dec 2024 08:48:03 -0800 Subject: [PATCH] Fix CI for GCC-13 on Ubuntu-18 (#700) --- .github/workflows/ci.yml | 53 ++++++++++++++++++++++++++-------------- 1 file changed, 35 insertions(+), 18 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b89f046ef..47c37e5a6 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -61,31 +61,48 @@ jobs: strategy: matrix: compiler: - - clang-3 - - clang-6 - - clang-8 - - clang-9 - - clang-10 - - clang-11 - - clang-15 - - clang-17 - - gcc-4.8 - - gcc-5 - - gcc-6 - - gcc-7 - - gcc-8 - - gcc-11 - # - gcc-13 TODO: figure out why its not passing + - name: clang-3 + - name: clang-6 + - name: clang-8 + - name: clang-9 + - name: clang-10 + - name: clang-11 + - name: clang-15 + - name: clang-17 + - name: gcc-4.8 + - name: gcc-5 + - name: gcc-6 + - name: gcc-7 + - name: gcc-8 + - name: gcc-11 + - name: gcc-13 + # See Issue: https://github.com/llvm/llvm-project/issues/59007. Although this issue + # has been fixed in LLVM, the fix will probably not propagate to older versions of Ubuntu and GCC 13.1. + # + # Starting with GLIBC version 2.34, the `dn_expand` function, previously found in `libresolv.so`, was moved to `libc.so`. This + # function is used internally by the `getaddrinfo()` system call. + # + # In our setup (As of December 2024), we are using an Ubuntu 18 Docker image on a newer Ubuntu host. + # However, due to compatibility issues between newer libasan.so in GCC 13.1 + # and the older Ubuntu image, the linker does not link with `libresolv.so`. + # This results in crashes in `getaddrinfo()` since Ubuntu-18 GLIBC is 2.31. + # + # This problem does not occur on Ubuntu 22 and newer because GLIBC versions 2.34 + # and above include `dn_expand` in `libc.so`, eliminating the dependency on + # `libresolv.so`. + # + # We can bypass this problem by linking with "resolv" manually until we bump + # our base Linux image to Ubuntu 22. + extra-build-flag: --cmake-extra=-DCMAKE_EXE_LINKER_FLAGS="-lresolv" steps: - uses: aws-actions/configure-aws-credentials@v4 with: role-to-assume: ${{ env.CRT_CI_ROLE }} aws-region: ${{ env.AWS_DEFAULT_REGION }} - # We can't use the `uses: docker://image` version yet, GitHub lacks authentication for actions -> packages - - name: Build ${{ env.PACKAGE_NAME }} + - name: Build ${{ matrix.compiler.name }} run: | aws s3 cp s3://aws-crt-test-stuff/ci/${{ env.BUILDER_VERSION }}/linux-container-ci.sh ./linux-container-ci.sh && chmod a+x ./linux-container-ci.sh - ./linux-container-ci.sh ${{ env.BUILDER_VERSION }} aws-crt-${{ env.LINUX_BASE_IMAGE }} build -p ${{ env.PACKAGE_NAME }} --compiler=${{ matrix.compiler }} + ./linux-container-ci.sh ${{ env.BUILDER_VERSION }} aws-crt-${{ env.LINUX_BASE_IMAGE }} build -p ${{ env.PACKAGE_NAME }} --compiler=${{ matrix.compiler.name }} ${{ matrix.compiler.extra-build-flag }} linux-debug: runs-on: ubuntu-24.04 # latest