Skip to content

Commit 2acd62d

Browse files
committed
join_orders_after_tls_destructors: ensure thread 2 is launched before thread 1 enters TLS destructors
1 parent 8a0a4b1 commit 2acd62d

File tree

1 file changed

+9
-8
lines changed

1 file changed

+9
-8
lines changed

library/std/src/thread/local/tests.rs

+9-8
Original file line numberDiff line numberDiff line change
@@ -250,13 +250,6 @@ fn join_orders_after_tls_destructors() {
250250

251251
impl Drop for TlDrop {
252252
fn drop(&mut self) {
253-
loop {
254-
match SYNC_STATE.load(Ordering::SeqCst) {
255-
FRESH => thread::yield_now(),
256-
THREAD2_LAUNCHED => break,
257-
v => unreachable!("sync state: {}", v),
258-
}
259-
}
260253
let mut sync_state = SYNC_STATE.swap(THREAD1_WAITING, Ordering::SeqCst);
261254
loop {
262255
match sync_state {
@@ -276,7 +269,15 @@ fn join_orders_after_tls_destructors() {
276269
static TL_DROP: TlDrop = TlDrop;
277270
}
278271

279-
TL_DROP.with(|_| {})
272+
TL_DROP.with(|_| {});
273+
274+
loop {
275+
match SYNC_STATE.load(Ordering::SeqCst) {
276+
FRESH => thread::yield_now(),
277+
THREAD2_LAUNCHED => break,
278+
v => unreachable!("sync state: {}", v),
279+
}
280+
}
280281
})
281282
.unwrap();
282283

0 commit comments

Comments
 (0)