rust/library
Matthias Krüger 2ee3668ad5
Rollup merge of #127843 - workingjubilee:break-up-big-ass-stack-overflow-fn, r=joboet
unix: document unsafety for std `sig{action,altstack}`

I found many surprising elements here while trying to wrap a measly 5 functions with `unsafe`. I would rather not "just" mindlessly wrap this code with `unsafe { }`, so I decided to document it properly.

On Unix, this code covers the "create and setup signal handler" part of the stack overflow code, and serves as the primary safety boundary for the signal handler. It is rarely audited, very gnarly, and worth extra attention. It calls other unsafe functions defined in this module, but "can we correctly map the right memory, or find the right address ranges?" are separate questions, and get increasingly platform-specific. The question here is the more general "are we doing everything in the correct order, and setting up the handler in the correct way?"

As part of this audit, I noticed that we do some peculiar things that we should probably refrain from. However, I avoided making changes that I deemed might have a different final result in Rust programs. I did, however, reorder some events so that the signal handler is installed _after_ we install the alternate stack. We do not run much code between these events, but it is probably best if the timespan between the handler being available and the new stack being installed is 0 nanoseconds.
2024-07-20 13:24:53 +02:00
..
alloc Adjust some comments on individual use declarations. 2024-07-17 08:05:39 +10:00
backtrace@72265bea21 Update backtrace to 0.3.73 2024-06-06 22:50:45 -07:00
core Auto merge of #127982 - matthiaskrgr:rollup-nzyvphj, r=matthiaskrgr 2024-07-19 18:40:33 +00:00
panic_abort Stabilise c_unwind 2024-06-19 13:54:51 +01:00
panic_unwind Use the native unwind function in miri where possible 2024-07-01 18:02:40 +00:00
portable-simd wasm64 build with target-feature=+simd128,+atomics 2024-06-23 22:58:30 -07:00
proc_macro Avoid ref when using format! for perf 2024-07-19 12:23:49 -04:00
profiler_builtins Update cc crate to v1.0.97 2024-05-08 15:06:35 +00:00
rtstartup library: Fix warnings in rtstartup 2024-01-06 01:32:03 +03:00
rustc-std-workspace-alloc Replace libstd, libcore, liballoc in line comments. 2022-12-30 14:00:42 +01:00
rustc-std-workspace-core
rustc-std-workspace-std
std Rollup merge of #127843 - workingjubilee:break-up-big-ass-stack-overflow-fn, r=joboet 2024-07-20 13:24:53 +02:00
stdarch@df3618d9f3 feat: update stdarch submodule for intrinsics on ARM 2024-05-15 15:38:58 -04:00
sysroot Add experimental raw-dylib feature to std 2024-07-05 16:11:25 +00:00
test Rollup merge of #127594 - c6c7:fuchsia-status-code-match-arm, r=tmandry 2024-07-18 23:05:21 +02:00
unwind Stabilise c_unwind 2024-06-19 13:54:51 +01:00