-
Couldn't load subscription status.
- Fork 5.2k
Initial provisions for semantic Crossgen2 PDB validation #97090
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
1a066ad to
779c017
Compare
|
@jkoritzinsky / @markples - I think this mostly works now so I'm opening this for review. As you probably know, I'm about to move to a different org so I'll either need to get this in quickly or finalizing this PR will likely fall on one of you. I think we shouldn't drop the ball on this as it's already got broken twice. |
This Quality Week work item is motivated by my findings from a few months back that Crossgen2 PDB generator had been producing bogus symbol files for almost half a year due to a trivial bug and no testing in place was able to catch that. This change adds initial provisions for semantic PDB validation. In this initial commit I'm adding a new managed app PdbChecker that uses the DIA library to read a given PDB and optionally check it for the presence of given symbols. In parallel I'm making test infra changes that enable selective PDB validation support in individual tests including checks for the presence of expected symbols. This change by itself introduces rudimentary PR / CI validation of PDB files produced by Crossgen2. As next step I plan to introduce additional provisions for running this logic for all tests to be added to one of the Crossgen2-specific pipelines, and validation of PDBs produced during compilation of the framework assemblies. Thanks Tomas
After I fixed PDB generation in Crossgen2 for the second time, I have revived my old PR
#75172
for semantic PDB validation (the GitHub bot doesn't let me reopen the pull request even after unlocking the conversation claiming it can no longer track the rebased branch).
Thanks
Tomas
P.S. In this iteration the test is instrumented to fail to let me see the list of symbols in the log. Once I verify that, I'll remove the instrumentation and the change should be ready for review.