-
Notifications
You must be signed in to change notification settings - Fork 13.6k
Document Poisoning in LazyCell
and LazyLock
#144872
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 and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
+118
−5
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
I think this is valid since
This should probably be raised as an open question in #134646, which tracks the |
@bors r+ rollup |
6 tasks
samueltardieu
added a commit
to samueltardieu/rust
that referenced
this pull request
Aug 4, 2025
…manieu Document Poisoning in `LazyCell` and `LazyLock` Currently, there is no documentation of poisoning behavior in either `LazyCell` or `LazyLock`, even though both of them can be observed as poisoned by users. `LazyCell` [plagyround example](https://play.rust-lang.org/?version=stable&mode=debug&edition=2024&gist=9cf38b8dc56db100848f54085c2c697d) `LazyLock` [playground example](https://play.rust-lang.org/?version=stable&mode=debug&edition=2024&gist=f1cd6f9fe16636e347ebb695a0ce30c0) # Open Questions - [x] Is it worth making the implementation of `LazyLock` more complicated to ensure that the the panic message is `"LazyLock instance has previously been poisoned"` instead of `"Once instance has previously been poisoned"`? See the `LazyLock` playground link above for more context. - [x] Does it make sense to move `LazyLock` into the `poison` module? It is certainly a poison-able type, but at the same time it is slightly different from the 4 other types currently in the `poison` module in that it is unrecoverable. I think this is more of a libs-api question. `@rustbot` label +T-libs-api Please let me know if these open questions deserve a separate issue / PR!
bors
added a commit
that referenced
this pull request
Aug 4, 2025
Rollup of 18 pull requests Successful merges: - #144467 (rustdoc template font links only emit `crossorigin` when needed) - #144548 (Rehome 21 `tests/ui/issues/` tests to other subdirectories under `tests/ui/`) - #144596 (libtest: print the type of test being run) - #144741 (fix: Error on illegal `[const]`s inside blocks within legal positions) - #144776 (`Printer` cleanups) - #144779 (Implement debugging output of the bootstrap Step graph into a DOT file) - #144813 (Add a tidy check to prevent adding UI tests directly under `tests/ui/`) - #144817 (Properly reject tail calls to `&FnPtr` or `&FnDef`) - #144852 (Rename `rust_panic_without_hook` to `resume_unwind` ) - #144866 (Remove `SHOULD_EMIT_LINTS` in favor of `should_emit`) - #144867 (Use `as_array` in PartialEq for arrays) - #144872 (Document Poisoning in `LazyCell` and `LazyLock`) - #144877 (coverage: Various small cleanups) - #144887 (`rust-analyzer` subtree update) - #144890 (Add `InterpCx::project_fields`) - #144894 (Delete `tests/ui/threads-sendsync/tcp-stress.rs`) - #144905 (rustc-dev-guide subtree update) - #144920 (Dont print arg span in MIR dump for tail call) r? `@ghost` `@rustbot` modify labels: rollup
bors
added a commit
that referenced
this pull request
Aug 5, 2025
Rollup of 17 pull requests Successful merges: - #144467 (rustdoc template font links only emit `crossorigin` when needed) - #144548 (Rehome 21 `tests/ui/issues/` tests to other subdirectories under `tests/ui/`) - #144741 (fix: Error on illegal `[const]`s inside blocks within legal positions) - #144776 (`Printer` cleanups) - #144779 (Implement debugging output of the bootstrap Step graph into a DOT file) - #144813 (Add a tidy check to prevent adding UI tests directly under `tests/ui/`) - #144817 (Properly reject tail calls to `&FnPtr` or `&FnDef`) - #144852 (Rename `rust_panic_without_hook` to `resume_unwind` ) - #144866 (Remove `SHOULD_EMIT_LINTS` in favor of `should_emit`) - #144867 (Use `as_array` in PartialEq for arrays) - #144872 (Document Poisoning in `LazyCell` and `LazyLock`) - #144877 (coverage: Various small cleanups) - #144887 (`rust-analyzer` subtree update) - #144890 (Add `InterpCx::project_fields`) - #144894 (Delete `tests/ui/threads-sendsync/tcp-stress.rs`) - #144905 (rustc-dev-guide subtree update) - #144920 (Dont print arg span in MIR dump for tail call) r? `@ghost` `@rustbot` modify labels: rollup
rust-timer
added a commit
that referenced
this pull request
Aug 5, 2025
Rollup merge of #144872 - connortsui20:once-poison-docs, r=Amanieu Document Poisoning in `LazyCell` and `LazyLock` Currently, there is no documentation of poisoning behavior in either `LazyCell` or `LazyLock`, even though both of them can be observed as poisoned by users. `LazyCell` [plagyround example](https://play.rust-lang.org/?version=stable&mode=debug&edition=2024&gist=9cf38b8dc56db100848f54085c2c697d) `LazyLock` [playground example](https://play.rust-lang.org/?version=stable&mode=debug&edition=2024&gist=f1cd6f9fe16636e347ebb695a0ce30c0) # Open Questions - [x] Is it worth making the implementation of `LazyLock` more complicated to ensure that the the panic message is `"LazyLock instance has previously been poisoned"` instead of `"Once instance has previously been poisoned"`? See the `LazyLock` playground link above for more context. - [x] Does it make sense to move `LazyLock` into the `poison` module? It is certainly a poison-able type, but at the same time it is slightly different from the 4 other types currently in the `poison` module in that it is unrecoverable. I think this is more of a libs-api question. ``@rustbot`` label +T-libs-api Please let me know if these open questions deserve a separate issue / PR!
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-libs
Relevant to the library team, which will review and decide on the PR/issue.
T-libs-api
Relevant to the library API team, which will review and decide on the PR/issue.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Currently, there is no documentation of poisoning behavior in either
LazyCell
orLazyLock
, even though both of them can be observed as poisoned by users.LazyCell
plagyround exampleLazyLock
playground exampleOpen Questions
LazyLock
more complicated to ensure that the the panic message is"LazyLock instance has previously been poisoned"
instead of"Once instance has previously been poisoned"
? See theLazyLock
playground link above for more context.LazyLock
into thepoison
module? It is certainly a poison-able type, but at the same time it is slightly different from the 4 other types currently in thepoison
module in that it is unrecoverable. I think this is more of a libs-api question.@rustbot label +T-libs-api
Please let me know if these open questions deserve a separate issue / PR!