Re: [BUG REPORT] use of unreachable() masks uninitialized variables warnings

From: Theodore Ts'o
Date: Thu Feb 11 2016 - 21:42:37 EST


On Thu, Feb 11, 2016 at 11:12:12AM -0700, Jeff Merkey wrote:
>
> That's good to know, they could be false positives, but it was kind of
> wierd behavior caused by that macro.

If it is true, it sounds more like a compiler bug to me. Any
statements a BUG() call are unreachable. If the compiler assumes that
in the case of:

if (a)
BUG();
printf("foo bar\n");

That the printf is not reachable, that's a compiler bug. And not a
problem in the BUG() macro.

It might be that it's worthwhile to use other static code analysis
tools. Many people will look at warnings from Coverity and clang to
find potential problems, since these tend to find more warnings than
just using gcc. The problem with some of these, including Coverity,
is that they can be __too__ noisy, and if 90% of the warnings are
false positives, most people won't take the time to weed out several
dozen bogus warnings to find the one good one.

In your case, for example, I looked through several dozen warnings,
and they were ***all*** bogus. Keep in mind that this might make me
less inclined to pay attention to complaints from you in the future.
The story of the buy who cried wolf too often comes to mind.

Perhaps you could actually take a close look at the warnings, before
you fire off an e-mail? If at least one of the warnings were valid
and pointed at an actual bug, it wouldn't have been a complete waste
of my time....

Best regards,

- Ted