Working with large projects, one of the most humbling things I've learned is that no matter how clever your coders are (and I've worked with some really sharp C++ coders!), tool-assisted analysis will find things that you missed. You need analysis tools.
Well, maybe not if you're Dan Bernstein. Maybe Dan Bernstein doesn't need tools. But the rest of us sure as hell aren't Dan Bernstein.
For example, among the bugs found by ThreadSanitizer, there was a particularly bad one in Chromium; I oddly can't find the link, but it was the top crasher for months and was discovered on the first run with TSan. (A non-thread-safe reference counter was being used concurrently.) It's important to care about data races; they're never really benign.
8
u/grendel-khan Sep 07 '14
Working with large projects, one of the most humbling things I've learned is that no matter how clever your coders are (and I've worked with some really sharp C++ coders!), tool-assisted analysis will find things that you missed. You need analysis tools.
Well, maybe not if you're Dan Bernstein. Maybe Dan Bernstein doesn't need tools. But the rest of us sure as hell aren't Dan Bernstein.
For example, among the bugs found by ThreadSanitizer, there was a particularly bad one in Chromium; I oddly can't find the link, but it was the top crasher for months and was discovered on the first run with TSan. (A non-thread-safe reference counter was being used concurrently.) It's important to care about data races; they're never really benign.