Make stable_mir::with_tables sound by oli-obk · Pull Request #120128 · rust-lang/rust (original) (raw)

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service andprivacy statement. We’ll occasionally send you account related emails.

Already on GitHub?Sign in to your account

Conversation3 Commits4 Checks0 Files changed

Conversation

This file contains hidden or 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

[ Show hidden characters]({{ revealButtonHref }})

oli-obk

See the first commit for the actual soundness fix. The rest is just fallout from that and is entirely safe code. Includes most of #120120

The major difference to #120120 is that we don't need an unsafe trait, as we can now rely on the type system (the only unsafe part, and the actual source of the unsoundness was in with_tables)

r? @celinval

@oli-obk

We were able to uplift any value from Tables to 'static, which is unsound.

@oli-obk

@celinval @oli-obk

The internal function was unsound, it could cause UB in rare cases where the user inadvertly stored the returned object in a location that could outlive the TyCtxt.

In order to make it safe, we now take a type context as an argument to the internal fn, and we ensure that interned items are lifted using the provided context.

Thus, this change ensures that the compiler can properly enforce that the object does not outlive the type context it was lifted to.

@rustbot rustbot added S-waiting-on-review

Status: Awaiting review from the assignee but also interested parties.

T-compiler

Relevant to the compiler team, which will review and decide on the PR/issue.

labels

Jan 19, 2024

@rust-log-analyzer

This comment has been minimized.

@oli-obk

@celinval

@bors

📌 Commit 6cd6539 has been approved by celinval

It is now in the queue for this repository.

@bors bors 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

Jan 21, 2024

matthiaskrgr added a commit to matthiaskrgr/rust that referenced this pull request

Jan 21, 2024

@matthiaskrgr

…nval

Make stable_mir::with_tables sound

See the first commit for the actual soundness fix. The rest is just fallout from that and is entirely safe code. Includes most of rust-lang#120120

The major difference to rust-lang#120120 is that we don't need an unsafe trait, as we can now rely on the type system (the only unsafe part, and the actual source of the unsoundness was in with_tables)

r? @celinval

This was referenced

Jan 21, 2024

bors added a commit to rust-lang-ci/rust that referenced this pull request

Jan 21, 2024

@bors

bors added a commit to rust-lang-ci/rust that referenced this pull request

Jan 21, 2024

@bors

bors added a commit to rust-lang-ci/rust that referenced this pull request

Jan 21, 2024

@bors

bors added a commit to rust-lang-ci/rust that referenced this pull request

Jan 21, 2024

@bors

bors added a commit to rust-lang-ci/rust that referenced this pull request

Jan 22, 2024

@bors

rust-timer added a commit to rust-lang-ci/rust that referenced this pull request

Jan 22, 2024

@rust-timer

Rollup merge of rust-lang#120128 - oli-obk:smir_internal_lift, r=celinval

Make stable_mir::with_tables sound

See the first commit for the actual soundness fix. The rest is just fallout from that and is entirely safe code. Includes most of rust-lang#120120

The major difference to rust-lang#120120 is that we don't need an unsafe trait, as we can now rely on the type system (the only unsafe part, and the actual source of the unsoundness was in with_tables)

r? @celinval

celinval added a commit to celinval/kani-dev that referenced this pull request

Jan 24, 2024

@celinval

feliperodri added a commit to model-checking/kani that referenced this pull request

Feb 8, 2024

Related PRs so far:

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 and MIT licenses.


Signed-off-by: Felipe R. Monteiro felisous@amazon.com Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: tautschnig tautschnig@users.noreply.github.com Co-authored-by: Qinheping Hu qinhh@amazon.com Co-authored-by: Michael Tautschnig tautschn@amazon.com Co-authored-by: Felipe R. Monteiro felisous@amazon.com

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.