Sanitizer checks #1
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Run tests with sanitizers enabled | |
# - UBSAN - undefined behaviour (default) | |
# - ASAN - memory leaks etc | |
# - TSAN - multi-threading issues | |
name: Sanitizer checks | |
run-name: Sanitizer checks | |
on: | |
push: | |
branches: | |
- devel | |
- sanitize-test | |
- master | |
jobs: | |
build-ubsan: | |
runs-on: ubuntu-24.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- run: uname -a | |
- run: sudo modprobe btrfs | |
- run: sudo apt-get update -qqq | |
- run: sudo apt-get install -y pkg-config gcc liblzo2-dev libzstd-dev libblkid-dev uuid-dev zlib1g-dev libext2fs-dev e2fsprogs libudev-dev python3-sphinx libaio-dev liburing-dev attr jq | |
- name: Configure | |
run: ./autogen.sh && ./configure --disable-documentation | |
- name: Make | |
run: make V=1 D=ubsan | |
- name: Tests cli | |
run: sudo make D=ubsan TEST_LOG=dump test-cli | |
- name: Tests mkfs | |
run: sudo make D=ubsan TEST_LOG=dump test-mkfs | |
- name: Tests check | |
run: sudo make D=ubsan TEST_LOG=dump test-check | |
- name: Tests check (lowmem) | |
run: sudo make D=ubsan TEST_LOG=dump test-check-lowmem | |
- name: Tests misc | |
run: sudo make D=ubsan TEST_LOG=dump test-misc | |
- name: Tests fuzz | |
run: sudo make D=ubsan TEST_LOG=dump test-fuzz | |
- name: Tests convert | |
run: sudo make D=ubsan TEST_LOG=dump test-convert | |
- name: Test internal APIs | |
run: make D=ubsan test-api | |
- name: Libbtrfsutil test | |
run: make D=ubsan test-libbtrfsutil | |
- name: Libbtrfs build test | |
run: make D=ubsan library-test | |
- name: Tests hash (correctness) | |
run: make D=ubsan hash-vectest && ./hash-vectest | |
- name: Save logs on failure | |
if: ${{ failure() }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: test-results | |
path: "tests/*-results.txt" | |
if-no-files-found: ignore | |
build-asan: | |
runs-on: ubuntu-24.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- run: uname -a | |
- run: sudo modprobe btrfs | |
- run: sudo apt-get update -qqq | |
- run: sudo apt-get install -y pkg-config gcc liblzo2-dev libzstd-dev libblkid-dev uuid-dev zlib1g-dev libext2fs-dev e2fsprogs libudev-dev python3-sphinx libaio-dev liburing-dev attr jq | |
- name: Configure | |
run: ./autogen.sh && ./configure --disable-documentation | |
- name: Make | |
run: make V=1 D=asan | |
- name: Tests cli | |
run: sudo make D=asan TEST_LOG=dump test-cli | |
- name: Tests mkfs | |
run: sudo make D=asan TEST_LOG=dump test-mkfs | |
- name: Tests check | |
run: sudo make D=asan TEST_LOG=dump test-check | |
- name: Tests check (lowmem) | |
run: sudo make D=asan TEST_LOG=dump test-check-lowmem | |
- name: Tests misc | |
run: sudo make D=asan TEST_LOG=dump test-misc | |
- name: Tests fuzz | |
run: sudo make D=asan TEST_LOG=dump test-fuzz | |
- name: Tests convert | |
run: sudo make D=asan TEST_LOG=dump test-convert | |
- name: Test internal APIs | |
run: make D=asan test-api | |
# Temporary: the library or python bindings are not linked with ASAN and test cannot be run | |
# - name: Libbtrfsutil test | |
# run: make D=asan test-libbtrfsutil | |
# - name: Libbtrfs build test | |
# run: make D=asan library-test | |
- name: Tests hash (correctness) | |
run: make D=asan hash-vectest && ./hash-vectest | |
- name: Save logs on failure | |
if: ${{ failure() }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: test-results | |
path: "tests/*-results.txt" | |
if-no-files-found: ignore | |
build-tsan: | |
runs-on: ubuntu-24.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- run: uname -a | |
- run: sudo modprobe btrfs | |
- run: sudo apt-get update -qqq | |
- run: sudo apt-get install -y pkg-config gcc liblzo2-dev libzstd-dev libblkid-dev uuid-dev zlib1g-dev libext2fs-dev e2fsprogs libudev-dev python3-sphinx libaio-dev liburing-dev attr jq | |
- name: Configure | |
run: ./autogen.sh && ./configure --disable-documentation | |
- name: Make | |
run: make V=1 D=tsan | |
- name: Tests cli | |
run: sudo make D=tsan TEST_LOG=dump test-cli | |
- name: Tests mkfs | |
run: sudo make D=tsan TEST_LOG=dump test-mkfs | |
- name: Tests check | |
run: sudo make D=tsan TEST_LOG=dump test-check | |
- name: Tests check (lowmem) | |
run: sudo make D=tsan TEST_LOG=dump test-check-lowmem | |
- name: Tests misc | |
run: sudo make D=tsan TEST_LOG=dump test-misc | |
- name: Tests fuzz | |
run: sudo make D=tsan TEST_LOG=dump test-fuzz | |
- name: Tests convert | |
run: sudo make D=tsan TEST_LOG=dump test-convert | |
- name: Test internal APIs | |
run: make D=tsan test-api | |
# Temporary: the library or python bindings are not linked with TSAN and test cannot be run | |
# - name: Libbtrfsutil test | |
# run: make D=tsan test-libbtrfsutil | |
# - name: Libbtrfs build test | |
# run: make D=tsan library-test | |
- name: Tests hash (correctness) | |
run: make D=tsan hash-vectest && ./hash-vectest | |
- name: Save logs on failure | |
if: ${{ failure() }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: test-results | |
path: "tests/*-results.txt" | |
if-no-files-found: ignore |