]> git.lizzy.rs Git - rust.git/commitdiff
join_orders_after_tls_destructors: ensure thread 2 is launched before thread 1 enters...
authorMohsen Zohrevandi <mohsen.zohrevandi@fortanix.com>
Thu, 6 May 2021 16:36:26 +0000 (09:36 -0700)
committerMohsen Zohrevandi <mohsen.zohrevandi@fortanix.com>
Thu, 6 May 2021 16:36:26 +0000 (09:36 -0700)
library/std/src/thread/local/tests.rs

index 494ad4e5fda9a5fe1b7eb37188dd9ca4c1355286..f33d6129619318e8774303d9b77b930de34093f5 100644 (file)
@@ -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 drop(&mut self) {
                     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();