Skip to content

miri recursive validation: only check one layer deep#154269

Merged
rust-bors[bot] merged 1 commit intorust-lang:mainfrom
RalfJung:miri-recursive-shallow
Mar 25, 2026
Merged

miri recursive validation: only check one layer deep#154269
rust-bors[bot] merged 1 commit intorust-lang:mainfrom
RalfJung:miri-recursive-shallow

Conversation

@RalfJung
Copy link
Copy Markdown
Member

@RalfJung RalfJung commented Mar 23, 2026

As has been proposed in rust-lang/unsafe-code-guidelines#414, let's see what happens if we make recursive checking in Miri shallow: we treat whatever is behind a reference as if it was inside MaybeDangling, which means nested references do not have to be dereferenceable.

This changes the meaning of the original flag -- I don't think it is worth supporting multiple variants of recursive checking (it'd require a bunch of new plumbing), and this seems to be the strictest variant that still has any traction in the discussion.

@rustbot rustbot added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. labels Mar 23, 2026
@RalfJung
Copy link
Copy Markdown
Member Author

@bors try jobs=dist-x86_64-linux

@rust-bors

This comment has been minimized.

rust-bors bot pushed a commit that referenced this pull request Mar 23, 2026
miri recursive checking: only check one layer deep


try-job: dist-x86_64-linux
@RalfJung RalfJung force-pushed the miri-recursive-shallow branch from 3b4979d to 54efd74 Compare March 23, 2026 17:43
@RalfJung
Copy link
Copy Markdown
Member Author

@bors try jobs=dist-x86_64-linux

@rust-bors

This comment has been minimized.

rust-bors bot pushed a commit that referenced this pull request Mar 23, 2026
miri recursive checking: only check one layer deep


try-job: dist-x86_64-linux
@RalfJung RalfJung force-pushed the miri-recursive-shallow branch from 54efd74 to eac975c Compare March 23, 2026 19:23
@RalfJung RalfJung changed the title miri recursive checking: only check one layer deep miri recursive validation: only check one layer deep Mar 23, 2026
@rust-bors
Copy link
Copy Markdown
Contributor

rust-bors bot commented Mar 23, 2026

☀️ Try build successful (CI)
Build commit: 5b0348a (5b0348a8cd8ae08dde6362cefc4cb3b6c78329e3, parent: 13e2abaac846b2680ae93e1b3bd9fe7fe1b9a7fe)

@RalfJung RalfJung force-pushed the miri-recursive-shallow branch from eac975c to 5f68044 Compare March 24, 2026 06:59
@RalfJung RalfJung marked this pull request as ready for review March 24, 2026 06:59
@rustbot
Copy link
Copy Markdown
Collaborator

rustbot commented Mar 24, 2026

The Miri subtree was changed

cc @rust-lang/miri

Some changes occurred to the CTFE / Miri interpreter

cc @rust-lang/miri

Some changes occurred to the CTFE machinery

cc @oli-obk, @lcnr

@rustbot rustbot added the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Mar 24, 2026
@rustbot rustbot removed the S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. label Mar 24, 2026
@rustbot
Copy link
Copy Markdown
Collaborator

rustbot commented Mar 24, 2026

r? @petrochenkov

rustbot has assigned @petrochenkov.
They will have a look at your PR within the next two weeks and either review your PR or reassign to another reviewer.

Use r? to explicitly pick a reviewer

Why was this reviewer chosen?

The reviewer was selected based on:

  • Owners of files modified in this PR: compiler, mir
  • compiler, mir expanded to 69 candidates
  • Random selection from 12 candidates

@RalfJung
Copy link
Copy Markdown
Member Author

This is basically a tweak of #128531.
r? @saethlin

@rustbot rustbot assigned saethlin and unassigned petrochenkov Mar 24, 2026
@saethlin
Copy link
Copy Markdown
Member

This changes the meaning of the original flag -- I don't think it is worth supporting multiple variants of recursive checking (it'd require a bunch of new plumbing), and this seems to be the strictest variant that still has any traction in the discussion.

I agree with this justification, but I really wish we (and the compiler!) had flag handling code that made this less of an argument 🙃

@saethlin
Copy link
Copy Markdown
Member

@bors r+

@rust-bors
Copy link
Copy Markdown
Contributor

rust-bors bot commented Mar 25, 2026

📌 Commit 5f68044 has been approved by saethlin

It is now in the queue for this repository.

@rust-bors rust-bors bot added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Mar 25, 2026
jhpratt added a commit to jhpratt/rust that referenced this pull request Mar 25, 2026
…=saethlin

miri recursive validation: only check one layer deep

As has been proposed in rust-lang/unsafe-code-guidelines#414, let's see what happens if we make recursive checking in Miri shallow: we treat whatever is behind a reference as if it was inside `MaybeDangling`, which means nested references do not have to be dereferenceable.

This changes the meaning of the original flag -- I don't think it is worth supporting multiple variants of recursive checking (it'd require a bunch of new plumbing), and this seems to be the strictest variant that still has any traction in the discussion.
rust-bors bot pushed a commit that referenced this pull request Mar 25, 2026
Rollup of 6 pull requests

Successful merges:

 - #154004 (`Alignment`: move from `ptr` to `mem` and rename `as_nonzero` to `as_nonzero_usize`)
 - #153049 (Add `-Zsanitize=kernel-hwaddress`)
 - #154269 (miri recursive validation: only check one layer deep)
 - #154112 (some `tests/ui/macros` cleanup)
 - #154131 (begin `tests/ui/structs-enums` cleanup)
 - #154233 (Move ui/issues tests to relevant subdirectories)
jhpratt added a commit to jhpratt/rust that referenced this pull request Mar 25, 2026
…=saethlin

miri recursive validation: only check one layer deep

As has been proposed in rust-lang/unsafe-code-guidelines#414, let's see what happens if we make recursive checking in Miri shallow: we treat whatever is behind a reference as if it was inside `MaybeDangling`, which means nested references do not have to be dereferenceable.

This changes the meaning of the original flag -- I don't think it is worth supporting multiple variants of recursive checking (it'd require a bunch of new plumbing), and this seems to be the strictest variant that still has any traction in the discussion.
rust-bors bot pushed a commit that referenced this pull request Mar 25, 2026
Rollup of 5 pull requests

Successful merges:

 - #153049 (Add `-Zsanitize=kernel-hwaddress`)
 - #154269 (miri recursive validation: only check one layer deep)
 - #154112 (some `tests/ui/macros` cleanup)
 - #154131 (begin `tests/ui/structs-enums` cleanup)
 - #154233 (Move ui/issues tests to relevant subdirectories)
JonathanBrouwer added a commit to JonathanBrouwer/rust that referenced this pull request Mar 25, 2026
…=saethlin

miri recursive validation: only check one layer deep

As has been proposed in rust-lang/unsafe-code-guidelines#414, let's see what happens if we make recursive checking in Miri shallow: we treat whatever is behind a reference as if it was inside `MaybeDangling`, which means nested references do not have to be dereferenceable.

This changes the meaning of the original flag -- I don't think it is worth supporting multiple variants of recursive checking (it'd require a bunch of new plumbing), and this seems to be the strictest variant that still has any traction in the discussion.
rust-bors bot pushed a commit that referenced this pull request Mar 25, 2026
…uwer

Rollup of 22 pull requests

Successful merges:

 - #153049 (Add `-Zsanitize=kernel-hwaddress`)
 - #153702 (Add macro matcher for `guard` fragment specifier)
 - #154200 (debuginfo: emit DW_TAG_call_site entries)
 - #154263 (interpret: when passing an argument fails, point at that argument)
 - #154269 (miri recursive validation: only check one layer deep)
 - #154313 (Init `self_decl` with a correct visibility)
 - #154344 (Update LLVM to 22.1.2)
 - #154348 (re-enable enzyme/autodiff builds on dist-aarch64-apple)
 - #154351 (Overhaul `Erasable` impls)
 - #154363 (delegation: fix zero-args nested delegation ICE)
 - #154364 (delegation: don't propagate synthetic params, remove lifetime hacks)
 - #151148 (Add functions to `GrowableBitSet`)
 - #154090 (Move tests in the statics category)
 - #154112 (some `tests/ui/macros` cleanup)
 - #154131 (begin `tests/ui/structs-enums` cleanup)
 - #154216 (unstably mark `NonNull::with_exposed_provenance` as const)
 - #154230 (Moved and rename issue-50411 to tests/ui/mir/inliner-double-elaborate)
 - #154233 (Move ui/issues tests to relevant subdirectories)
 - #154288 (Fix typo in doc comment for `char::to_titlecase`)
 - #154355 (delegation: add const type ICE test)
 - #154358 (install-template.sh: Optimize by using Bourne shell builtins.)
 - #154360 (fromrangeiter-overflow-checks: accept optional `signext` for argument)
@rust-bors rust-bors bot merged commit b5e4b4c into rust-lang:main Mar 25, 2026
11 checks passed
@rustbot rustbot added this to the 1.96.0 milestone Mar 25, 2026
github-actions bot pushed a commit to rust-lang/miri that referenced this pull request Mar 26, 2026
…uwer

Rollup of 22 pull requests

Successful merges:

 - rust-lang/rust#153049 (Add `-Zsanitize=kernel-hwaddress`)
 - rust-lang/rust#153702 (Add macro matcher for `guard` fragment specifier)
 - rust-lang/rust#154200 (debuginfo: emit DW_TAG_call_site entries)
 - rust-lang/rust#154263 (interpret: when passing an argument fails, point at that argument)
 - rust-lang/rust#154269 (miri recursive validation: only check one layer deep)
 - rust-lang/rust#154313 (Init `self_decl` with a correct visibility)
 - rust-lang/rust#154344 (Update LLVM to 22.1.2)
 - rust-lang/rust#154348 (re-enable enzyme/autodiff builds on dist-aarch64-apple)
 - rust-lang/rust#154351 (Overhaul `Erasable` impls)
 - rust-lang/rust#154363 (delegation: fix zero-args nested delegation ICE)
 - rust-lang/rust#154364 (delegation: don't propagate synthetic params, remove lifetime hacks)
 - rust-lang/rust#151148 (Add functions to `GrowableBitSet`)
 - rust-lang/rust#154090 (Move tests in the statics category)
 - rust-lang/rust#154112 (some `tests/ui/macros` cleanup)
 - rust-lang/rust#154131 (begin `tests/ui/structs-enums` cleanup)
 - rust-lang/rust#154216 (unstably mark `NonNull::with_exposed_provenance` as const)
 - rust-lang/rust#154230 (Moved and rename issue-50411 to tests/ui/mir/inliner-double-elaborate)
 - rust-lang/rust#154233 (Move ui/issues tests to relevant subdirectories)
 - rust-lang/rust#154288 (Fix typo in doc comment for `char::to_titlecase`)
 - rust-lang/rust#154355 (delegation: add const type ICE test)
 - rust-lang/rust#154358 (install-template.sh: Optimize by using Bourne shell builtins.)
 - rust-lang/rust#154360 (fromrangeiter-overflow-checks: accept optional `signext` for argument)
@RalfJung RalfJung deleted the miri-recursive-shallow branch March 26, 2026 06:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants