Skip to content
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

Regression range should include OSS-Fuzz infrastructure changes #11881

Open
davidben opened this issue May 1, 2024 · 4 comments
Open

Regression range should include OSS-Fuzz infrastructure changes #11881

davidben opened this issue May 1, 2024 · 4 comments

Comments

@davidben
Copy link
Contributor

davidben commented May 1, 2024

It's happened a few times now that OSS-Fuzz infrastructure changes have caused MSan false positives in the fuzzers. Most recently, #11880, but other times we've been hit by regressions in Clang, etc.

When this happens, it is difficult to diagnose on the projects' side, and we often end up spending a lot of time trying to reproduce the issue. (It takes me less time now, but only because I know to be suspicious of OSS-Fuzz MSan reports. That's not exactly a good outcome either! 😁 )

Could the regression range in OSS-Fuzz reports include changes to the compiler and other infrastructure? That way we could look at recent changes there if the regression range for the project itself doesn't check out.

@jonathanmetzman
Copy link
Contributor

Sorry for the false positives.
This seems like a fair request. @oliverchang I think this is a good first issue for some of our new teammates. WDYT?

@davidben
Copy link
Contributor Author

davidben commented May 1, 2024

Oh, don't worry about it! Stuff breaks and MSan is really, really finicky. Meh. 😄 This was just a thought to help pinpoint things, since I otherwise have no idea how to tell what infra stuff changed recently.

@maflcko
Copy link
Contributor

maflcko commented May 2, 2024

This was just a thought to help pinpoint things

Another idea I had was to reproduce msan crashes in valgrind. If valgrind can not reproduce the uninitialized read, it is more likely to be correct than not. See also #5836

@davidben
Copy link
Contributor Author

davidben commented May 2, 2024

That will end up suppressing true positives. valgrind works by instrumenting the compiled code and can't see uninitialized memory that happened to not survive through the compiler's optimization passes. It also needs to conservatively assume many things are fine, because it needs to accept code that compilers output.

For example, valgrind allows you to compute over uninitialized memory, as long as you don't branch on it, but C/C++'s rules are actually much stricter.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants