about summary refs log tree commit diff
path: root/compiler/rustc_interface/src
diff options
context:
space:
mode:
authorMatthias Krüger <476013+matthiaskrgr@users.noreply.github.com>2025-05-19 18:08:42 +0200
committerGitHub <noreply@github.com>2025-05-19 18:08:42 +0200
commit6e784f842a93a2d1a6687aef810118c5bcedf219 (patch)
tree58f573d0b60ba9e0db85745c205611b7d78f50dc /compiler/rustc_interface/src
parent334136f1123bd0c75c334297719a564162c242e3 (diff)
parent26ea763f24754cf79191ad9ae949ad285f51c363 (diff)
downloadrust-6e784f842a93a2d1a6687aef810118c5bcedf219.tar.gz
rust-6e784f842a93a2d1a6687aef810118c5bcedf219.zip
Rollup merge of #141248 - RalfJung:reentrant-lock-race, r=joboet
fix data race in ReentrantLock fallback for targets without 64bit atomics

See [Zulip](https://rust-lang.zulipchat.com/#narrow/channel/269128-miri/topic/reentrant.20lock.20failure.20on.20musl) for details: the address used to identify a thread might get lazily allocated inside `tls_addr()`, so if we call that *after* doing the `tls_addr.load()` it is too late to establish synchronization with prior threads that used the same address -- the `load()` thus races with the `store()` by that prior thread, and might hence see outdated values, and then the entire logic breaks down.

r? `@joboet`
Diffstat (limited to 'compiler/rustc_interface/src')
0 files changed, 0 insertions, 0 deletions