about summary refs log tree commit diff
path: root/library/std/src/thread
diff options
context:
space:
mode:
authorRalf Jung <post@ralfj.de>2021-07-09 20:50:08 +0200
committerRalf Jung <post@ralfj.de>2021-07-10 11:54:38 +0200
commit2750d3ac6a4f6015a7a9720b8fbcb3610aa691e1 (patch)
tree51e67cea0b7c657bc90f06bd3dd5a4115a962c1e /library/std/src/thread
parent619c27a53959e2d79aadb01cba5b2c49756df771 (diff)
downloadrust-2750d3ac6a4f6015a7a9720b8fbcb3610aa691e1.tar.gz
rust-2750d3ac6a4f6015a7a9720b8fbcb3610aa691e1.zip
avoid reentrant lock acquire when ThreadIds run out
Diffstat (limited to 'library/std/src/thread')
-rw-r--r--library/std/src/thread/mod.rs1
1 files changed, 1 insertions, 0 deletions
diff --git a/library/std/src/thread/mod.rs b/library/std/src/thread/mod.rs
index da2d1160493..5630904da77 100644
--- a/library/std/src/thread/mod.rs
+++ b/library/std/src/thread/mod.rs
@@ -1004,6 +1004,7 @@ impl ThreadId {
             // If we somehow use up all our bits, panic so that we're not
             // covering up subtle bugs of IDs being reused.
             if COUNTER == u64::MAX {
+                drop(_guard); // in case the panic handler ends up calling `ThreadId::new()`, avoid reentrant lock acquire.
                 panic!("failed to generate unique thread ID: bitspace exhausted");
             }