-
Couldn't load subscription status.
- Fork 13.9k
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
Conversation
I think this is valid since
This should probably be raised as an open question in #134646, which tracks the |
|
@bors r+ rollup |
…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!
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
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
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!
…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!
Rollup of 17 pull requests Successful merges: - rust-lang/rust#144467 (rustdoc template font links only emit `crossorigin` when needed) - rust-lang/rust#144548 (Rehome 21 `tests/ui/issues/` tests to other subdirectories under `tests/ui/`) - rust-lang/rust#144741 (fix: Error on illegal `[const]`s inside blocks within legal positions) - rust-lang/rust#144776 (`Printer` cleanups) - rust-lang/rust#144779 (Implement debugging output of the bootstrap Step graph into a DOT file) - rust-lang/rust#144813 (Add a tidy check to prevent adding UI tests directly under `tests/ui/`) - rust-lang/rust#144817 (Properly reject tail calls to `&FnPtr` or `&FnDef`) - rust-lang/rust#144852 (Rename `rust_panic_without_hook` to `resume_unwind` ) - rust-lang/rust#144866 (Remove `SHOULD_EMIT_LINTS` in favor of `should_emit`) - rust-lang/rust#144867 (Use `as_array` in PartialEq for arrays) - rust-lang/rust#144872 (Document Poisoning in `LazyCell` and `LazyLock`) - rust-lang/rust#144877 (coverage: Various small cleanups) - rust-lang/rust#144887 (`rust-analyzer` subtree update) - rust-lang/rust#144890 (Add `InterpCx::project_fields`) - rust-lang/rust#144894 (Delete `tests/ui/threads-sendsync/tcp-stress.rs`) - rust-lang/rust#144905 (rustc-dev-guide subtree update) - rust-lang/rust#144920 (Dont print arg span in MIR dump for tail call) r? `@ghost` `@rustbot` modify labels: rollup
Rollup of 17 pull requests Successful merges: - rust-lang/rust#144467 (rustdoc template font links only emit `crossorigin` when needed) - rust-lang/rust#144548 (Rehome 21 `tests/ui/issues/` tests to other subdirectories under `tests/ui/`) - rust-lang/rust#144741 (fix: Error on illegal `[const]`s inside blocks within legal positions) - rust-lang/rust#144776 (`Printer` cleanups) - rust-lang/rust#144779 (Implement debugging output of the bootstrap Step graph into a DOT file) - rust-lang/rust#144813 (Add a tidy check to prevent adding UI tests directly under `tests/ui/`) - rust-lang/rust#144817 (Properly reject tail calls to `&FnPtr` or `&FnDef`) - rust-lang/rust#144852 (Rename `rust_panic_without_hook` to `resume_unwind` ) - rust-lang/rust#144866 (Remove `SHOULD_EMIT_LINTS` in favor of `should_emit`) - rust-lang/rust#144867 (Use `as_array` in PartialEq for arrays) - rust-lang/rust#144872 (Document Poisoning in `LazyCell` and `LazyLock`) - rust-lang/rust#144877 (coverage: Various small cleanups) - rust-lang/rust#144887 (`rust-analyzer` subtree update) - rust-lang/rust#144890 (Add `InterpCx::project_fields`) - rust-lang/rust#144894 (Delete `tests/ui/threads-sendsync/tcp-stress.rs`) - rust-lang/rust#144905 (rustc-dev-guide subtree update) - rust-lang/rust#144920 (Dont print arg span in MIR dump for tail call) r? `@ghost` `@rustbot` modify labels: rollup
…r=Amanieu Fix `LazyLock` poison panic message Fixes the issue raised in rust-lang#144872 (comment) r? `@Amanieu`
…r=Amanieu Fix `LazyLock` poison panic message Fixes the issue raised in rust-lang#144872 (comment) r? ``@Amanieu``
…r=Amanieu Fix `LazyLock` poison panic message Fixes the issue raised in rust-lang#144872 (comment) r? `@Amanieu`
…r=Amanieu Fix `LazyLock` poison panic message Fixes the issue raised in rust-lang#144872 (comment) r? ``@Amanieu``
…r=Amanieu Fix `LazyLock` poison panic message Fixes the issue raised in rust-lang#144872 (comment) r? ```@Amanieu```
Rollup merge of #145307 - connortsui20:lazylock-poison-msg, r=Amanieu Fix `LazyLock` poison panic message Fixes the issue raised in #144872 (comment) r? ```@Amanieu```
Fix `LazyLock` poison panic message Fixes the issue raised in rust-lang/rust#144872 (comment) r? ```@Amanieu```
Fix `LazyLock` poison panic message Fixes the issue raised in rust-lang/rust#144872 (comment) r? ```@Amanieu```
…r=Amanieu Fix `LazyLock` poison panic message Fixes the issue raised in rust-lang#144872 (comment) r? ```@Amanieu```
Currently, there is no documentation of poisoning behavior in either
LazyCellorLazyLock, even though both of them can be observed as poisoned by users.LazyCellplagyround exampleLazyLockplayground exampleOpen Questions
LazyLockmore complicated to ensure that the the panic message is"LazyLock instance has previously been poisoned"instead of"Once instance has previously been poisoned"? See theLazyLockplayground link above for more context.LazyLockinto thepoisonmodule? It is certainly a poison-able type, but at the same time it is slightly different from the 4 other types currently in thepoisonmodule 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!