diff --git a/github/workflows/lsan.yml b/github/workflows/lsan.yml new file mode 100644 index 0000000..69ce0df --- /dev/null +++ b/github/workflows/lsan.yml @@ -0,0 +1,32 @@ +on: + push: + branches: [main] + pull_request: +name: Leak sanitizer +jobs: + test: + runs-on: ubuntu-latest + steps: + - uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: nightly + override: true + - uses: actions/checkout@v2 + - run: | + # to get the symbolizer for debug symbol resolution + sudo apt install llvm + # to fix buggy leak analyzer: + # https://github.com/japaric/rust-san#unrealiable-leaksanitizer + sed -i '/\[features\]/i [profile.dev]' Cargo.toml + sed -i '/profile.dev/a opt-level = 1' Cargo.toml + cat Cargo.toml + name: Enable debug symbols + - name: cargo test -Zsanitizer=leak + uses: actions-rs/cargo@v1 + with: + command: test + args: --all-features --target x86_64-unknown-linux-gnu + env: + RUSTFLAGS: "-Z sanitizer=leak" + LSAN_OPTIONS: "suppressions=lsan-suppressions.txt"