diff options
| author | Alex Crichton <alex@alexcrichton.com> | 2015-04-15 12:27:05 -0700 |
|---|---|---|
| committer | Alex Crichton <alex@alexcrichton.com> | 2015-04-27 16:15:36 -0700 |
| commit | d98ab4faf869ff0430ad73260b13ef8e473ef212 (patch) | |
| tree | 22fa7775d0ea81021b825738da48498d02ea4f5d /src/libstd/sys/unix/stack_overflow.rs | |
| parent | 0e154aaad6486fa8bf19b02bc3026ede0ceb91cf (diff) | |
| download | rust-d98ab4faf869ff0430ad73260b13ef8e473ef212.tar.gz rust-d98ab4faf869ff0430ad73260b13ef8e473ef212.zip | |
std: Don't assume thread::current() works on panic
Inspecting the current thread's info may not always work due to the TLS value having been destroyed (or is actively being destroyed). The code for printing a panic message assumed, however, that it could acquire the thread's name through this method. Instead this commit propagates the `Option` outwards to allow the `std::panicking` module to handle the case where the current thread isn't present. While it solves the immediate issue of #24313, there is still another underlying issue of panicking destructors in thread locals will abort the process. Closes #24313
Diffstat (limited to 'src/libstd/sys/unix/stack_overflow.rs')
| -rw-r--r-- | src/libstd/sys/unix/stack_overflow.rs | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/libstd/sys/unix/stack_overflow.rs b/src/libstd/sys/unix/stack_overflow.rs index 6887095c53a..2bc280d1274 100644 --- a/src/libstd/sys/unix/stack_overflow.rs +++ b/src/libstd/sys/unix/stack_overflow.rs @@ -81,7 +81,7 @@ mod imp { // We're calling into functions with stack checks stack::record_sp_limit(0); - let guard = thread_info::stack_guard(); + let guard = thread_info::stack_guard().unwrap_or(0); let addr = (*info).si_addr as usize; if guard == 0 || addr < guard - PAGE_SIZE || addr >= guard { |
