Skip to content

Commit

Permalink
Auto merge of rust-lang#126829 - RalfJung:main-thread-tls, r=workingj…
Browse files Browse the repository at this point in the history
…ubilee

add test for main thread thread-local destructors

Fixes rust-lang#28129
  • Loading branch information
bors committed Jun 24, 2024
2 parents 2c243d9 + 32c648c commit 789118c
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 0 deletions.
33 changes: 33 additions & 0 deletions tests/ui/thread-local/main-thread-dtor.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
//! Ensure that TLS destructors run on the main thread.
//@ run-pass
//@ check-run-results
// targets without threads tend to implement thread-locals as `static`s so no dtors are running
//@ needs-threads
// some targets do not run dtors on the main thread (issue #126858)
//@ ignore-musl
//@ ignore-android

struct Bar;

impl Drop for Bar {
fn drop(&mut self) {
println!("Bar dtor");
}
}

struct Foo;

impl Drop for Foo {
fn drop(&mut self) {
println!("Foo dtor");
// We initialize another thread-local inside the dtor, which is an interesting corner case.
thread_local!(static BAR: Bar = Bar);
BAR.with(|_| {});
}
}

thread_local!(static FOO: Foo = Foo);

fn main() {
FOO.with(|_| {});
}
2 changes: 2 additions & 0 deletions tests/ui/thread-local/main-thread-dtor.run.stdout
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
Foo dtor
Bar dtor

0 comments on commit 789118c

Please sign in to comment.