From cf300a7e34bca1b980a3c54600a56e78f891eebd Mon Sep 17 00:00:00 2001 From: zachs18 <8355914+zachs18@users.noreply.github.com> Date: Fri, 5 Jul 2024 16:45:03 -0500 Subject: [PATCH] Update library/std/src/sys/pal/common/exit_guard.rs Co-authored-by: Ralf Jung --- std/src/sys/pal/common/exit_guard.rs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/std/src/sys/pal/common/exit_guard.rs b/std/src/sys/pal/common/exit_guard.rs index eb2c14cdecc71..a1b0309b003ea 100644 --- a/std/src/sys/pal/common/exit_guard.rs +++ b/std/src/sys/pal/common/exit_guard.rs @@ -2,12 +2,14 @@ cfg_if::cfg_if! { if #[cfg(target_os = "linux")] { /// Mitigation for /// - /// 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`.