Update library/std/src/sys/pal/common/exit_guard.rs

Co-authored-by: Ralf Jung <post@ralfj.de>
This commit is contained in:
zachs18 2024-07-05 16:45:03 -05:00 committed by GitHub
parent b4149c6ad4
commit 9de76e3201
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -2,12 +2,14 @@ cfg_if::cfg_if! {
if #[cfg(target_os = "linux")] {
/// Mitigation for <https://github.com/rust-lang/rust/issues/126600>
///
/// On UNIX-like platforms (where `libc::exit` may not be thread-safe), ensure that only one
/// On glibc, `libc::exit` has been observed to not always be thread-safe.
/// It is currently unclear whether that is a glibc bug or allowed by the standard.
/// To mitigate this problem, we ensure that only one
/// Rust thread calls `libc::exit` (or returns from `main`) by calling this function before
/// calling `libc::exit` (or returning from `main`).
///
/// Technically not enough to ensure soundness, since other code directly calling
/// libc::exit will still race with this.
/// Technically, this is not enough to ensure soundness, since other code directly calling
/// `libc::exit` will still race with this.
///
/// *This function does not itself call `libc::exit`.* This is so it can also be used
/// to guard returning from `main`.