Fix ICE when dumping the dep graph with the parallel frontend - #160063
Open
xmakro wants to merge 1 commit into
Open
Fix ICE when dumping the dep graph with the parallel frontend#160063xmakro wants to merge 1 commit into
xmakro wants to merge 1 commit into
Conversation
Contributor
Author
|
r? @petrochenkov |
xmakro
marked this pull request as ready for review
July 28, 2026 11:57
Contributor
|
@bors r+ |
Contributor
JonathanBrouwer
added a commit
to JonathanBrouwer/rust
that referenced
this pull request
Jul 28, 2026
…-ice, r=petrochenkov
Fix ICE when dumping the dep graph with the parallel frontend
`-Zquery-dep-graph -Zdump-dep-graph` ICEs whenever `-Zthreads` is greater than 1:
```console
$ echo 'fn main() {}' > foo.rs
$ rustc -C incremental=incr -Zquery-dep-graph -Zdump-dep-graph -Zthreads=2 foo.rs
thread 'rustc' panicked at compiler/rustc_middle/src/dep_graph/retained.rs:40:63:
called `Option::unwrap()` on a `None` value
```
Reproduces on nightly on 15 of 15 runs at `-Zthreads` 2, 4 and 8. `-Zthreads=1` passes.
Dep-graph indices are handed to threads in batches of 256 and `EncoderState::finish` abandons each worker's unused tail, so `LinkedGraph::add_node_with_idx` back-fills the skipped slots with `data: None`. `RetainedDepGraph::nodes` unwrapped every slot, instead we skip the empty ones.
JonathanBrouwer
added a commit
to JonathanBrouwer/rust
that referenced
this pull request
Jul 28, 2026
…-ice, r=petrochenkov
Fix ICE when dumping the dep graph with the parallel frontend
`-Zquery-dep-graph -Zdump-dep-graph` ICEs whenever `-Zthreads` is greater than 1:
```console
$ echo 'fn main() {}' > foo.rs
$ rustc -C incremental=incr -Zquery-dep-graph -Zdump-dep-graph -Zthreads=2 foo.rs
thread 'rustc' panicked at compiler/rustc_middle/src/dep_graph/retained.rs:40:63:
called `Option::unwrap()` on a `None` value
```
Reproduces on nightly on 15 of 15 runs at `-Zthreads` 2, 4 and 8. `-Zthreads=1` passes.
Dep-graph indices are handed to threads in batches of 256 and `EncoderState::finish` abandons each worker's unused tail, so `LinkedGraph::add_node_with_idx` back-fills the skipped slots with `data: None`. `RetainedDepGraph::nodes` unwrapped every slot, instead we skip the empty ones.
rust-bors Bot
pushed a commit
that referenced
this pull request
Jul 28, 2026
…uwer Rollup of 21 pull requests Successful merges: - #159990 (Many "predicate"-to-"clause" renamings) - #159665 (Replace most `Ty::new_fn_def` calls with `type_of` queries directly) - #159687 (rustdoc: Set tracing max_level_info when debug-logging is false) - #160057 (refactor(mir-transform): Calculate optimization status inside `run_passes_inner`) - #160060 (codegen: skip stores for entirely-uninit constant aggregate fields, attempt #2) - #160063 (Fix ICE when dumping the dep graph with the parallel frontend) - #160065 (Distinguish the dep-graph index space from the live node count) - #158038 (Split register_tool into register_attribute_tool and register_lint_tool) - #159776 (remove const hack in alloc) - #159978 (run intrinsic-test by default on x86_64-gnu) - #160008 (Avoid stale closure recovery state across statements) - #160027 (Add regression test for #132767) - #160030 (Update `browser-ui-test` version to `0.25.0`) - #160046 (Improve consistency of attribute error messages (part 2)) - #160056 (Fix associated function suggestion for generic ADTs) - #160069 (Update Rust crate tracing-subscriber to v0.3.23 [SECURITY]) - #160071 (sanitize_standard_fds: clarify macos comment) - #160076 (use unstable features when updating dependencies) - #160092 (miri ui tests: don't run native tests on stage 0) - #160093 (Switch cargo assignments to weihanglo) - #160094 (Update assignment for docs)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
-Zquery-dep-graph -Zdump-dep-graphICEs whenever-Zthreadsis greater than 1:Reproduces on nightly on 15 of 15 runs at
-Zthreads2, 4 and 8.-Zthreads=1passes.Dep-graph indices are handed to threads in batches of 256 and
EncoderState::finishabandons each worker's unused tail, soLinkedGraph::add_node_with_idxback-fills the skipped slots withdata: None.RetainedDepGraph::nodesunwrapped every slot, instead we skip the empty ones.