Skip to content

Commit

Permalink
Auto merge of #124686 - saethlin:rust-file-footer, r=fmease
Browse files Browse the repository at this point in the history
Add a footer in FileEncoder and check for it in MemDecoder

We have a few reports of ICEs due to decoding failures, where the fault does not lie with the compiler. The goal of this PR is to add some very lightweight and on-by-default validation to the compiler's outputs. If validation fails, we emit a fatal error for rmeta files in general that mentions the path that didn't load, and for incremental compilation artifacts we emit a verbose warning that tries to explain the situation and treat the artifacts as outdated.

The validation currently implemented here is very crude, and yet I think we have 11 ICE reports currently open (you can find them by searching issues for `1002111927320821928687967599834759150`) which this simple validation would have detected. The structure of the code changes here should permit the addition of further validation code, such as a checksum, if it is merited. I would like to have code to detect corruption such as reported in rust-lang/rust#124719, but I'm not yet sure how to do that efficiently, and this PR is already a good size.

The ICE reports I have in mind that this PR would have smoothed over are:
rust-lang/rust#124469
rust-lang/rust#123352
rust-lang/rust#123376 [^1]
rust-lang/rust#99763
rust-lang/rust#93900.

---

[^1]: This one might be a compiler bug, but even if it is I think the workflow described is pushing the envelope of what we can support. This issue is one of the reasons this warning still asks people to file an issue.
  • Loading branch information
bors committed May 22, 2024
2 parents 388606b + de60a2a commit 2f5f95d
Showing 0 changed files with 0 additions and 0 deletions.

0 comments on commit 2f5f95d

Please sign in to comment.