Skip to content

Debugging MUSL Libc #319

Debugging MUSL Libc

Debugging MUSL Libc #319

Workflow file for this run

name: CI
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
linux-gcc:
runs-on: ubuntu-22.04
continue-on-error: true
strategy:
matrix:
gcc_version: [9, 10, 11, 12]
scheduler: [nemesis, sherwood, distrib]
topology: [hwloc, binders, no]
env:
CC: gcc-${{ matrix.gcc_version }}
CXX: g++-${{ matrix.gcc_version }}
steps:
- uses: actions/checkout@v3
- name: install compiler
run: sudo apt-get install gcc-${{ matrix.gcc_version }} g++-${{ matrix.gcc_version }}
- if: ${{ matrix.topology != 'no' }}
run: |
sudo apt-get install hwloc libhwloc-dev
hwloc-ls --version
- name: build qthreads
run: |
./autogen.sh
./configure --enable-picky --with-scheduler=${{ matrix.scheduler }} --with-topology=${{ matrix.topology }}
make -j2
- name: make check
run: timeout -k 10s --foreground 3m make check
timeout-minutes: 4
linux-clang:
runs-on: ubuntu-22.04
continue-on-error: true
strategy:
matrix:
clang_version: [11, 12, 13, 14, 15, 16]
scheduler: [nemesis, sherwood, distrib]
topology: [hwloc, binders, no]
include:
- clang_version: 11
gcc_version: 10
- clang_version: 12
gcc_version: 11
- clang_version: 13
gcc_version: 11
- clang_version: 14
gcc_version: 11
- clang_version: 15
gcc_version: 12
- clang_version: 16
gcc_version: 13
env:
CC: clang-${{ matrix.clang_version }}
CXX: clang++-${{ matrix.clang_version }}
steps:
- uses: actions/checkout@v3
- if: ${{ matrix.clang_version == '16' }}
run: |
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - && break || sleep 1
sudo apt-add-repository 'deb https://apt.llvm.org/jammy/ llvm-toolchain-jammy-${{ matrix.clang_version }} main' && break || sleep 1
- if: ${{ matrix.gcc_version == '13' && ! matrix.use_libcxx }}
run: sudo apt-add-repository 'ppa:ubuntu-toolchain-r/test' && break || sleep 1
- name: install gcc
run: sudo apt-get install gcc-${{ matrix.gcc_version }} g++-${{ matrix.gcc_version }}
- name: install clang
run: sudo apt-get install clang-${{ matrix.clang_version }}
- if: ${{ matrix.topology != 'no' }}
run: |
sudo apt-get install hwloc libhwloc-dev
hwloc-ls --version
- name: build qthreads
run: |
./autogen.sh
./configure --enable-picky --with-scheduler=${{ matrix.scheduler }} --with-topology=${{ matrix.topology }}
make -j2
- name: make check
run: timeout -k 10s --foreground 6m make check
timeout-minutes: 7
linux-icx:
runs-on: ubuntu-22.04
continue-on-error: true
strategy:
matrix:
scheduler: [nemesis, sherwood, distrib]
topology: [hwloc, binders, no]
env:
CC: icx
CXX: icpx
steps:
- uses: actions/checkout@v3
- if: ${{ matrix.topology != 'no' }}
run: |
sudo apt-get install hwloc libhwloc-dev
hwloc-ls --version
- name: install gcc
run: |
sudo apt-add-repository 'ppa:ubuntu-toolchain-r/test' && break || sleep 1
sudo apt-get install gcc-13 g++-13
- name: install icx
run: |
wget -O - https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB | sudo apt-key add - && break || sleep 1
sudo apt-add-repository 'deb https://apt.repos.intel.com/oneapi all main' && break || sleep 1
sudo apt-get install intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2023.2.1
source /opt/intel/oneapi/setvars.sh
icx -v
- name: build qthreads
run: |
source /opt/intel/oneapi/setvars.sh
./autogen.sh
./configure --enable-picky --with-scheduler=${{ matrix.scheduler }} --with-topology=${{ matrix.topology }} || cat config.log
make -j2
- name: make check
run: |
source /opt/intel/oneapi/setvars.sh
timeout -k 10s --foreground 6m make check
timeout-minutes: 7
linux-icc:
runs-on: ubuntu-22.04
continue-on-error: true
strategy:
matrix:
scheduler: [nemesis, sherwood, distrib]
topology: [hwloc, binders, no]
env:
CC: icc
CXX: icpc
steps:
- uses: actions/checkout@v3
- if: ${{ matrix.topology != 'no' }}
run: |
sudo apt-get install hwloc libhwloc-dev
hwloc-ls --version
- name: install gcc
run: |
sudo apt-get install gcc-12 g++-12 # last compatible gcc version for icpc
- name: install icc
run: |
wget -O - https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB | sudo apt-key add - && break || sleep 1
sudo apt-add-repository 'deb https://apt.repos.intel.com/oneapi all main' && break || sleep 1
sudo apt-get install intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2023.2.1
source /opt/intel/oneapi/setvars.sh
icc -v
- name: build qthreads
run: |
source /opt/intel/oneapi/setvars.sh
./autogen.sh
./configure --enable-picky --with-scheduler=${{ matrix.scheduler }} --with-topology=${{ matrix.topology }} || cat config.log
make -j2
- name: make check
run: |
source /opt/intel/oneapi/setvars.sh
timeout -k 10s --foreground 6m make check
timeout-minutes: 7
mac:
runs-on: macos-latest
continue-on-error: true
strategy:
matrix:
scheduler: [nemesis, sherwood, distrib]
topology: [hwloc, binders, no]
use_asserts: [true, false]
env:
QTHREADS_ENABLE_ASSERTS: ${{ matrix.use_asserts && '--enable-asserts' || '' }}
steps:
- uses: actions/checkout@v3
- name: install deps
run: |
brew install autoconf automake libtool coreutils # coreutils is to get gtimeout for CI and is not universally required by qthreads.
- if: ${{ matrix.topology != 'no' }}
run: |
brew install hwloc
hwloc-ls --version
- name: build qthreads
run: |
./autogen.sh
./configure $QTHREADS_ENABLE_ASSERTS --enable-picky --with-scheduler=${{ matrix.scheduler }} --with-topology=${{ matrix.topology }}
make -j3
- name: make check
run: gtimeout -k 10s --foreground 8m make check
timeout-minutes: 9
sanitizers:
runs-on: ubuntu-22.04
continue-on-error: true
strategy:
matrix:
sanitizer: [address, memory, thread, undefined]
scheduler: [nemesis, sherwood, distrib]
topology: [hwloc, binders, no]
use_libcxx: [false] # disable testing on libcxx since its effect seems very limited for now.
env:
CC: clang-17
CXX: clang++-17
CFLAGS: "-fsanitize=${{ matrix.sanitizer }}"
CXXFLAGS: ${{ matrix.use_libcxx && format('-stdlib=libc++ -fsanitize={0}', matrix.sanitizer) || format('-fsanitize={0}', matrix.sanitizer) }}
LDFLAGS: "-fsanitize=${{ matrix.sanitizer }}"
steps:
- uses: actions/checkout@v3
- if: ${{ ! matrix.use_libcxx }}
run: |
sudo apt-add-repository 'ppa:ubuntu-toolchain-r/test' && break || sleep 1
sudo apt-get install gcc-13 g++-13
- name: install compiler
run: |
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - && break || sleep 1
sudo apt-add-repository 'deb https://apt.llvm.org/jammy/ llvm-toolchain-jammy-17 main' && break || sleep 1
sudo apt-get install clang-17
- if: ${{ matrix.use_libcxx }}
run: sudo apt-get install libc++-17-dev libc++abi-17-dev
- if: ${{ matrix.topology != 'no' }}
run: |
sudo apt-get install hwloc libhwloc-dev
hwloc-ls --version
- name: build qthreads
run: |
./autogen.sh
./configure --enable-picky --with-scheduler=${{ matrix.scheduler }} --with-topology=${{ matrix.topology }}
make -j2
- name: make check
run: timeout -k 10s --foreground 8m make check
timeout-minutes: 9
linux-thorough:
runs-on: ubuntu-22.04
continue-on-error: true
strategy:
matrix:
compiler: [gcc, clang]
scheduler: [nemesis, sherwood, distrib]
topology: [hwloc, binders, no]
use_libcxx: [false] # disable testing on libcxx since its effect seems very limited for now.
use_asserts: [true, false]
exclude:
- compiler: gcc
use_libcxx: true
env:
CC: ${{ matrix.compiler == 'gcc' && 'gcc-13' || 'clang-17' }}
CXX: ${{ matrix.compiler == 'gcc' && 'g++-13' || 'clang++-17' }}
CXXFLAGS: ${{ matrix.use_libcxx && '-stdlib=libc++' || '' }}
QTHREADS_ENABLE_ASSERTS: ${{ matrix.use_asserts && '--enable-asserts' || '' }}
steps:
- uses: actions/checkout@v3
- run: |
sudo apt-add-repository 'ppa:ubuntu-toolchain-r/test' && break || sleep 1
sudo apt-get install gcc-13 g++-13
- if: ${{ matrix.compiler == 'clang' }}
run: |
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - && break || sleep 1
sudo apt-add-repository 'deb https://apt.llvm.org/jammy/ llvm-toolchain-jammy-17 main' && break || sleep 1
sudo apt-get install clang-17
- if: ${{ matrix.use_libcxx }}
run: sudo apt-get install libc++-17-dev libc++abi-17-dev
- if: ${{ matrix.topology != 'no' }}
run: |
sudo apt-get install hwloc libhwloc-dev
hwloc-ls --version
- name: build qthreads
run: |
./autogen.sh
./configure $QTHREADS_ENABLE_ASSERTS --enable-picky --with-scheduler=${{ matrix.scheduler }} --with-topology=${{ matrix.topology }}
make -j2
- name: make check
run: timeout -k 10s --foreground 6m make check
timeout-minutes: 7