From 3a14a5c0cd0c3102d9c5ba7bb7ca5a017d2f605c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois?= Date: Sat, 11 Jun 2022 17:26:44 +0200 Subject: [PATCH 1/5] unpin nightly and disable weak memory emulation --- .github/workflows/ci.yml | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5b51e1322acc1..c79ea70f7a775 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -76,20 +76,18 @@ jobs: timeout-minutes: 60 steps: - uses: actions/checkout@v3 - # TODO: re-enable cache once nightly is unpinned - # - uses: actions/cache@v3 - # with: - # path: | - # ~/.cargo/bin/ - # ~/.cargo/registry/index/ - # ~/.cargo/registry/cache/ - # ~/.cargo/git/db/ - # target/ - # key: ${{ runner.os }}-cargo-miri-${{ hashFiles('**/Cargo.toml') }} + - uses: actions/cache@v3 + with: + path: | + ~/.cargo/bin/ + ~/.cargo/registry/index/ + ~/.cargo/registry/cache/ + ~/.cargo/git/db/ + target/ + key: ${{ runner.os }}-cargo-miri-${{ hashFiles('**/Cargo.toml') }} - uses: actions-rs/toolchain@v1 with: - # TODO: check again with nightly once https://github.com/rust-lang/miri/issues/2223 is fixed - toolchain: nightly-2022-06-08 + toolchain: nightly components: miri override: true - name: Install alsa and udev @@ -104,7 +102,9 @@ jobs: # to track down because allocids are nondeterministic. # -Zmiri-tag-raw-pointers is not strictly "necessary" but enables a lot of extra UB checks relating # to raw pointer aliasing rules that we should be trying to uphold. - MIRIFLAGS: -Zmiri-disable-isolation -Zmiri-ignore-leaks -Zmiri-tag-raw-pointers + # TODO: remove once https://github.com/rust-lang/miri/issues/2223 is fixed + # -Zmiri-disable-weak-memory-emulation + MIRIFLAGS: -Zmiri-disable-isolation -Zmiri-ignore-leaks -Zmiri-tag-raw-pointers -Zmiri-disable-weak-memory-emulation check-compiles: runs-on: ubuntu-latest From e7a888807820d02afc9c36ab1341e31c4b552bbf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois?= Date: Mon, 27 Jun 2022 22:11:43 +0200 Subject: [PATCH 2/5] use miri-permissive-provenance Co-authored-by: Ralf Jung --- .github/workflows/ci.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c79ea70f7a775..51a8d7a350565 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -102,9 +102,8 @@ jobs: # to track down because allocids are nondeterministic. # -Zmiri-tag-raw-pointers is not strictly "necessary" but enables a lot of extra UB checks relating # to raw pointer aliasing rules that we should be trying to uphold. - # TODO: remove once https://github.com/rust-lang/miri/issues/2223 is fixed - # -Zmiri-disable-weak-memory-emulation - MIRIFLAGS: -Zmiri-disable-isolation -Zmiri-ignore-leaks -Zmiri-tag-raw-pointers -Zmiri-disable-weak-memory-emulation + # -Zmiri-disable-weak-memory-emulation works around an unknown bug in bevy or Miri + MIRIFLAGS: -Zmiri-disable-isolation -Zmiri-ignore-leaks -Zmiri-permissive-provenance -Zmiri-disable-weak-memory-emulation check-compiles: runs-on: ubuntu-latest From 1e5b4423d40ca00e8d4e3befde7f5d8939fbecf6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois?= Date: Mon, 27 Jun 2022 22:19:37 +0200 Subject: [PATCH 3/5] update comments --- .github/workflows/ci.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 51a8d7a350565..dc1e5cafe3f9d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -97,12 +97,13 @@ jobs: env: # -Zrandomize-layout makes sure we dont rely on the layout of anything that might change RUSTFLAGS: -Zrandomize-layout + # https://github.com/rust-lang/miri#miri--z-flags-and-environment-variables # -Zmiri-disable-isolation is needed because our executor uses `fastrand` which accesses system time. # -Zmiri-ignore-leaks is needed because running bevy_ecs tests finds a memory leak but its impossible # to track down because allocids are nondeterministic. - # -Zmiri-tag-raw-pointers is not strictly "necessary" but enables a lot of extra UB checks relating - # to raw pointer aliasing rules that we should be trying to uphold. - # -Zmiri-disable-weak-memory-emulation works around an unknown bug in bevy or Miri + # -Zmiri-permissive-provenance enables extra UB checks relating to raw pointer aliasing rules that we + # should be trying to uphold. + # -Zmiri-disable-weak-memory-emulation works around an unknown bug in Bevy or Miri. MIRIFLAGS: -Zmiri-disable-isolation -Zmiri-ignore-leaks -Zmiri-permissive-provenance -Zmiri-disable-weak-memory-emulation check-compiles: From 0b7337470ce3d98e5a8651f792ee22f2526f6740 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois?= Date: Mon, 27 Jun 2022 23:02:16 +0200 Subject: [PATCH 4/5] update comment Co-authored-by: Ralf Jung --- .github/workflows/ci.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index dc1e5cafe3f9d..f6f126b2c2f65 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -101,8 +101,7 @@ jobs: # -Zmiri-disable-isolation is needed because our executor uses `fastrand` which accesses system time. # -Zmiri-ignore-leaks is needed because running bevy_ecs tests finds a memory leak but its impossible # to track down because allocids are nondeterministic. - # -Zmiri-permissive-provenance enables extra UB checks relating to raw pointer aliasing rules that we - # should be trying to uphold. + # -Zmiri-permissive-provenance disables warnings against int2ptr casts (since those are used by once_cell) # -Zmiri-disable-weak-memory-emulation works around an unknown bug in Bevy or Miri. MIRIFLAGS: -Zmiri-disable-isolation -Zmiri-ignore-leaks -Zmiri-permissive-provenance -Zmiri-disable-weak-memory-emulation From 2d6d42ea0dd9c914b5c10a7d09b53c48cdd146c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois?= Date: Fri, 1 Jul 2022 14:18:09 +0200 Subject: [PATCH 5/5] update comment with issue link Co-authored-by: Ralf Jung --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f6f126b2c2f65..0fdbac912286c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -102,7 +102,7 @@ jobs: # -Zmiri-ignore-leaks is needed because running bevy_ecs tests finds a memory leak but its impossible # to track down because allocids are nondeterministic. # -Zmiri-permissive-provenance disables warnings against int2ptr casts (since those are used by once_cell) - # -Zmiri-disable-weak-memory-emulation works around an unknown bug in Bevy or Miri. + # -Zmiri-disable-weak-memory-emulation works around https://github.com/bevyengine/bevy/issues/5164. MIRIFLAGS: -Zmiri-disable-isolation -Zmiri-ignore-leaks -Zmiri-permissive-provenance -Zmiri-disable-weak-memory-emulation check-compiles: