Skip to content

Commit 020ec5f

Browse files
committed
Add session globals to the deadlock thread
1 parent fc76480 commit 020ec5f

File tree

1 file changed

+7
-2
lines changed
  • compiler/rustc_interface/src

1 file changed

+7
-2
lines changed

compiler/rustc_interface/src/util.rs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ use rustc_session::{EarlyDiagCtxt, Session, filesearch};
1818
use rustc_span::edit_distance::find_best_match_for_name;
1919
use rustc_span::edition::Edition;
2020
use rustc_span::source_map::SourceMapInputs;
21-
use rustc_span::{Symbol, sym};
21+
use rustc_span::{SessionGlobals, Symbol, sym};
2222
use rustc_target::spec::Target;
2323
use tracing::info;
2424

@@ -190,6 +190,9 @@ pub(crate) fn run_in_thread_pool_with_globals<F: FnOnce(CurrentGcx) -> R + Send,
190190

191191
let current_gcx2 = current_gcx2.clone();
192192
let registry = rayon_core::Registry::current();
193+
let session_globals = rustc_span::with_session_globals(|session_globals| {
194+
session_globals as *const SessionGlobals as usize
195+
});
193196
thread::Builder::new()
194197
.name("rustc query cycle handler".to_string())
195198
.spawn(move || {
@@ -205,7 +208,9 @@ pub(crate) fn run_in_thread_pool_with_globals<F: FnOnce(CurrentGcx) -> R + Send,
205208
current_gcx2.access(|gcx| {
206209
tls::enter_context(&tls::ImplicitCtxt::new(gcx), || {
207210
tls::with(|tcx| {
208-
let (query_map, complete) = QueryCtxt::new(tcx).collect_active_jobs();
211+
let (query_map, complete) = rustc_span::set_session_globals_then(unsafe { &*(session_globals as *const SessionGlobals) }, || {
212+
QueryCtxt::new(tcx).collect_active_jobs()
213+
});
209214
if !complete {
210215
// There was an unexpected error collecting all active jobs, which we need
211216
// to find cycles to break.

0 commit comments

Comments
 (0)