std: improve safety documentation in UNIX stack overflow code - #162132
Conversation
|
r? @ChrisDenton rustbot has assigned @ChrisDenton. Use Why was this reviewer chosen?The reviewer was selected based on:
|
This comment has been minimized.
This comment has been minimized.
0340a0f to
7394cc6
Compare
That sounds like a good idea. I think I'll defer that to a follow-up PR though, unless you think otherwise? |
|
This is definitely an improvement on its own so I'm happy to accept this as-is @bors r+ |
…sDenton std: improve safety documentation in UNIX stack overflow code The UNIX stack overflow handling code was only partially documented, and applied `#![forbid(unsafe_op_in_unsafe_fn)]` inconsistently. Also, the existing safety documentation wasn't very clear on the assumptions made by `std` and the reasoning behind those assumptions. I've tried to rectify all that here by adding some `unsafe`, removing some `unsafe` and writing a lot of comments. There are no functional changes however, I'll get started on those once this is merged.
Rollup of 29 pull requests Successful merges: - #161694 (add `Complex` ABI run-make test) - #162014 (Move more `rustdoc-html` tests using `--test` into the right folder) - #162164 (Revert "Implement Debug for C-like enums with a concatenated string") - #160564 (volatile: allow accesses to non-AM memory to trap) - #161579 (suggest calling a fn item used as the iterator of a `for` loop) - #162044 (coverage: Resolve spans to file-coordinates in a separate step) - #162120 (Introduce `PerOwnerLoweringState`) - #162132 (std: improve safety documentation in UNIX stack overflow code) - #162151 (Test itanium mangling of `f16` and `f128`) - #162162 (Don't special-case `!` in stability checks anymore) - #162181 (Remove wrong UnusedBraces lint for iterator loop in edition 2024 ) - #162187 (Rename `thir::ExprKind::Use` to `ValueExpr`) - #158401 (mgca: Don't ICE when evaluating ValTrees that contain error constants) - #159873 (fuchsia: Add safestack as a supported sanitizer for x86_64 fuchsia) - #161847 (Preserve visibility in nested macro import suggestions) - #161951 (Windows: add fallback if `canonicalize` fails) - #161972 (Improve tests for `#[track_caller]` in async) - #162008 (Render the `box` pattern removal diagnostic more actionable & remove `box` expression recovery) - #162065 (std: don't reference `libc::O_NOFOLLOW` on VxWorks in `set_perm_nofollow`) - #162076 (docs(num): clarify conditions under which error occurs in `impl TryFrom<int> for int`) - #162152 (Revert "retrieve supported GCC targets from the sysroot") - #162153 (Prefer `LLVMGetVersion` for runtime info) - #162168 (fix ICE in project_goals/inherent) - #162171 (Explain LoongArch f16 NaN-boxing in inline asm) - #162173 (fix supposedly unreachable `bug!` being reachable) - #162180 (remove outdated next-solver FIXMEs) - #162191 (core: mark float `ClampBounds` methods as `#[inline]`) - #162195 (docs(time): clarify exact seconds for week and day) - #162199 (docs(time): clarify exact seconds for hour and minute)
…uwer Rollup of 25 pull requests Successful merges: - #161694 (add `Complex` ABI run-make test) - #162014 (Move more `rustdoc-html` tests using `--test` into the right folder) - #162164 (Revert "Implement Debug for C-like enums with a concatenated string") - #160564 (volatile: allow accesses to non-AM memory to trap) - #161579 (suggest calling a fn item used as the iterator of a `for` loop) - #162044 (coverage: Resolve spans to file-coordinates in a separate step) - #162120 (Introduce `PerOwnerLoweringState`) - #162132 (std: improve safety documentation in UNIX stack overflow code) - #162151 (Test itanium mangling of `f16` and `f128`) - #162162 (Don't special-case `!` in stability checks anymore) - #162181 (Remove wrong UnusedBraces lint for iterator loop in edition 2024 ) - #162187 (Rename `thir::ExprKind::Use` to `ValueExpr`) - #158401 (mgca: Don't ICE when evaluating ValTrees that contain error constants) - #159873 (fuchsia: Add safestack as a supported sanitizer for x86_64 fuchsia) - #161135 (Add `f16` and `f128` inline ASM support for PowerPC) - #161847 (Preserve visibility in nested macro import suggestions) - #161972 (Improve tests for `#[track_caller]` in async) - #162008 (Render the `box` pattern removal diagnostic more actionable & remove `box` expression recovery) - #162065 (std: don't reference `libc::O_NOFOLLOW` on VxWorks in `set_perm_nofollow`) - #162076 (docs(num): clarify conditions under which error occurs in `impl TryFrom<int> for int`) - #162111 (Update mailmap for Will Crichton and Petr Hosek) - #162152 (Revert "retrieve supported GCC targets from the sysroot") - #162153 (Prefer `LLVMGetVersion` for runtime info) - #162168 (fix ICE in project_goals/inherent) - #162171 (Explain LoongArch f16 NaN-boxing in inline asm)
Rollup merge of #162132 - joboet:safe_stack_overflow, r=ChrisDenton std: improve safety documentation in UNIX stack overflow code The UNIX stack overflow handling code was only partially documented, and applied `#![forbid(unsafe_op_in_unsafe_fn)]` inconsistently. Also, the existing safety documentation wasn't very clear on the assumptions made by `std` and the reasoning behind those assumptions. I've tried to rectify all that here by adding some `unsafe`, removing some `unsafe` and writing a lot of comments. There are no functional changes however, I'll get started on those once this is merged.
|
Note This PR was benchmarked as part of triage of its containing rollup: triage URL. Finished benchmarking commit (6d17148): comparison URL. Overall result: no relevant changes - no action needed@rustbot label: -perf-regression Instruction countThis perf run didn't have relevant results for this metric. Max RSS (memory usage)This perf run didn't have relevant results for this metric. CyclesThis perf run didn't have relevant results for this metric. Binary sizeThis perf run didn't have relevant results for this metric. Bootstrap: missing data |
…uwer Rollup of 25 pull requests Successful merges: - rust-lang/rust#161694 (add `Complex` ABI run-make test) - rust-lang/rust#162014 (Move more `rustdoc-html` tests using `--test` into the right folder) - rust-lang/rust#162164 (Revert "Implement Debug for C-like enums with a concatenated string") - rust-lang/rust#160564 (volatile: allow accesses to non-AM memory to trap) - rust-lang/rust#161579 (suggest calling a fn item used as the iterator of a `for` loop) - rust-lang/rust#162044 (coverage: Resolve spans to file-coordinates in a separate step) - rust-lang/rust#162120 (Introduce `PerOwnerLoweringState`) - rust-lang/rust#162132 (std: improve safety documentation in UNIX stack overflow code) - rust-lang/rust#162151 (Test itanium mangling of `f16` and `f128`) - rust-lang/rust#162162 (Don't special-case `!` in stability checks anymore) - rust-lang/rust#162181 (Remove wrong UnusedBraces lint for iterator loop in edition 2024 ) - rust-lang/rust#162187 (Rename `thir::ExprKind::Use` to `ValueExpr`) - rust-lang/rust#158401 (mgca: Don't ICE when evaluating ValTrees that contain error constants) - rust-lang/rust#159873 (fuchsia: Add safestack as a supported sanitizer for x86_64 fuchsia) - rust-lang/rust#161135 (Add `f16` and `f128` inline ASM support for PowerPC) - rust-lang/rust#161847 (Preserve visibility in nested macro import suggestions) - rust-lang/rust#161972 (Improve tests for `#[track_caller]` in async) - rust-lang/rust#162008 (Render the `box` pattern removal diagnostic more actionable & remove `box` expression recovery) - rust-lang/rust#162065 (std: don't reference `libc::O_NOFOLLOW` on VxWorks in `set_perm_nofollow`) - rust-lang/rust#162076 (docs(num): clarify conditions under which error occurs in `impl TryFrom<int> for int`) - rust-lang/rust#162111 (Update mailmap for Will Crichton and Petr Hosek) - rust-lang/rust#162152 (Revert "retrieve supported GCC targets from the sysroot") - rust-lang/rust#162153 (Prefer `LLVMGetVersion` for runtime info) - rust-lang/rust#162168 (fix ICE in project_goals/inherent) - rust-lang/rust#162171 (Explain LoongArch f16 NaN-boxing in inline asm)
The UNIX stack overflow handling code was only partially documented, and applied
#![forbid(unsafe_op_in_unsafe_fn)]inconsistently. Also, the existing safety documentation wasn't very clear on the assumptions made bystdand the reasoning behind those assumptions. I've tried to rectify all that here by adding someunsafe, removing someunsafeand writing a lot of comments. There are no functional changes however, I'll get started on those once this is merged.