diff options
| author | Mohsen Zohrevandi <mohsen.zohrevandi@fortanix.com> | 2021-05-06 09:36:26 -0700 |
|---|---|---|
| committer | Mohsen Zohrevandi <mohsen.zohrevandi@fortanix.com> | 2021-05-06 09:36:26 -0700 |
| commit | 2acd62d7c389bcdcf212673ed14120d2fd841df6 (patch) | |
| tree | 260f2783e1f43eefb9073884dc0f4bbf32295c02 | |
| parent | 8a0a4b1493264901e5e41c4285fc3cc9f8419c28 (diff) | |
| download | rust-2acd62d7c389bcdcf212673ed14120d2fd841df6.tar.gz rust-2acd62d7c389bcdcf212673ed14120d2fd841df6.zip | |
join_orders_after_tls_destructors: ensure thread 2 is launched before thread 1 enters TLS destructors
| -rw-r--r-- | library/std/src/thread/local/tests.rs | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/library/std/src/thread/local/tests.rs b/library/std/src/thread/local/tests.rs index 494ad4e5fda..f33d6129619 100644 --- a/library/std/src/thread/local/tests.rs +++ b/library/std/src/thread/local/tests.rs @@ -250,13 +250,6 @@ fn join_orders_after_tls_destructors() { impl Drop for TlDrop { fn drop(&mut self) { - loop { - match SYNC_STATE.load(Ordering::SeqCst) { - FRESH => thread::yield_now(), - THREAD2_LAUNCHED => break, - v => unreachable!("sync state: {}", v), - } - } let mut sync_state = SYNC_STATE.swap(THREAD1_WAITING, Ordering::SeqCst); loop { match sync_state { @@ -276,7 +269,15 @@ fn join_orders_after_tls_destructors() { static TL_DROP: TlDrop = TlDrop; } - TL_DROP.with(|_| {}) + TL_DROP.with(|_| {}); + + loop { + match SYNC_STATE.load(Ordering::SeqCst) { + FRESH => thread::yield_now(), + THREAD2_LAUNCHED => break, + v => unreachable!("sync state: {}", v), + } + } }) .unwrap(); |
