Detect use of MemorySanitizer without using Nightly-only features #381
Workflow file for this run
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
# This CI config checks that getrandom's backend implementation | |
# do not contain potential panics. | |
# | |
# It is unclear how to implement a no-panic check for esp_idf, fuchsia, | |
# vxworks, hermit, and solid backends, so we do not check them here, | |
# but they still should be panic-free. We do not check wasm_js backend | |
# since glue code generated by wasm-bindgen contains potential panics, | |
# so resulting WASM files inevitably contain potential panics for any | |
# code which non-trivially interacts with the JS enviroment. | |
name: No panic | |
on: | |
push: | |
branches: master | |
pull_request: | |
branches: master | |
permissions: | |
contents: read | |
defaults: | |
run: | |
working-directory: nopanic_check | |
env: | |
RUSTFLAGS: "-Dwarnings" | |
jobs: | |
linux: | |
name: Linux | |
runs-on: ubuntu-24.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: stable | |
targets: wasm32-wasip1, wasm32-wasip2 | |
- uses: Swatinem/rust-cache@v2 | |
- name: Build (linux_android_with_fallback.rs) | |
run: cargo build --release | |
- name: Check (linux_android_with_fallback.rs) | |
run: (exit $( grep -c panic target/release/libgetrandom_wrapper.so )) | |
- name: Build (linux_android.rs) | |
env: | |
RUSTFLAGS: -Dwarnings --cfg getrandom_backend="linux_getrandom" | |
run: cargo build --release | |
- name: Check (linux_android.rs) | |
run: (exit $( grep -c panic target/release/libgetrandom_wrapper.so )) | |
- name: Build (linux_rustix.rs) | |
env: | |
RUSTFLAGS: -Dwarnings --cfg getrandom_backend="linux_rustix" | |
run: cargo build --release | |
- name: Check (linux_rustix.rs) | |
run: (exit $( grep -c panic target/release/libgetrandom_wrapper.so )) | |
- name: Build (rdrand.rs) | |
env: | |
RUSTFLAGS: -Dwarnings --cfg getrandom_backend="rdrand" | |
run: cargo build --release | |
- name: Check (rdrand.rs) | |
run: (exit $( grep -c panic target/release/libgetrandom_wrapper.so )) | |
- name: Build (custom.rs) | |
env: | |
RUSTFLAGS: -Dwarnings --cfg getrandom_backend="custom" | |
run: cargo build --release | |
- name: Check (custom.rs) | |
run: (exit $( grep -c panic target/release/libgetrandom_wrapper.so )) | |
- name: Build (wasi.rs, preview 1) | |
run: cargo build --release --target wasm32-wasip1 | |
- name: Check (wasi.rs, preview 1) | |
run: (exit $( grep -c panic target/wasm32-wasip1/release/getrandom_wrapper.wasm )) | |
- name: Build (wasi.rs, preview 2) | |
run: cargo build --release --target wasm32-wasip2 | |
- name: Check (wasi.rs, preview 2) | |
run: (exit $( grep -c panic target/wasm32-wasip2/release/getrandom_wrapper.wasm )) | |
cross: | |
name: Cross | |
runs-on: ubuntu-24.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: stable | |
components: rust-src | |
targets: aarch64-unknown-linux-gnu,x86_64-unknown-netbsd,x86_64-unknown-freebsd,x86_64-pc-solaris | |
- uses: Swatinem/rust-cache@v2 | |
# TODO: use pre-compiled cross after a new (post-0.2.5) release | |
- name: Install cross | |
env: | |
# Allow compiler warnings during cross installation | |
RUSTFLAGS: | |
run: cargo install cross --force --git https://github.com/cross-rs/cross | |
- name: Build (rndr.rs) | |
env: | |
RUSTFLAGS: -Dwarnings --cfg getrandom_backend="rndr" | |
run: cross build --release --target=aarch64-unknown-linux-gnu | |
- name: Check (rndr.rs) | |
run: (exit $( grep -c panic target/aarch64-unknown-linux-gnu/release/libgetrandom_wrapper.so )) | |
- name: Build (getrandom.rs) | |
run: cross build --release --target=x86_64-unknown-freebsd | |
- name: Check (getrandom.rs) | |
run: (exit $( grep -c panic target/x86_64-unknown-freebsd/release/libgetrandom_wrapper.so )) | |
- name: Build (netbsd.rs) | |
run: cross build --release --target=x86_64-unknown-netbsd | |
- name: Check (netbsd.rs) | |
run: (exit $( grep -c panic target/x86_64-unknown-netbsd/release/libgetrandom_wrapper.so )) | |
- name: Build (solaris.rs) | |
run: cross build --release --target=x86_64-pc-solaris | |
- name: Check (solaris.rs) | |
run: (exit $( grep -c panic target/x86_64-pc-solaris/release/libgetrandom_wrapper.so )) | |
macos: | |
name: macOS | |
runs-on: macos-14 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: stable | |
targets: aarch64-apple-ios | |
- uses: Swatinem/rust-cache@v2 | |
# We do not need the grep check since linker fails | |
# if `panic_nonexistent` can not be eliminated | |
- name: Build (getentropy.rs) | |
run: cargo build --release --target=aarch64-apple-darwin | |
- name: Build (apple-other.rs) | |
run: cargo build --release --target=aarch64-apple-ios | |
windows: | |
name: Windows | |
runs-on: windows-2022 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: nightly-2024-10-14 | |
components: rust-src | |
- run: cargo build --release | |
- run: cargo build --release --target=x86_64-win7-windows-msvc -Zbuild-std="std,panic_abort" |