mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-26 00:34:06 +00:00
22f5bdc42b
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 https://github.com/rust-lang/rust/issues/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: https://github.com/rust-lang/rust/issues/124469 https://github.com/rust-lang/rust/issues/123352 https://github.com/rust-lang/rust/issues/123376 [^1] https://github.com/rust-lang/rust/issues/99763 https://github.com/rust-lang/rust/issues/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. |
||
---|---|---|
.. | ||
src | ||
Cargo.toml | ||
messages.ftl |