RedDocMD added a comment.

In D98726#2719100 <https://reviews.llvm.org/D98726#2719100>, @RedDocMD wrote:

> Judging by this line 
> <https://github.com/llvm/llvm-project/blob/ebe408ad8003c946ef871b955ab18e64e82697cb/clang/lib/StaticAnalyzer/Core/BugReporterVisitors.cpp#L2730>
>  in the `LikelyFalsePositiveSuppressionBRVisitor::finalizeVisitor()` method, 
> it seems that the bug report is squelched when the visitor encounters an  
> `ExplodedNode` which corresponds to a `LocationContext`, whose associated 
> `Decl` lies in **std** namespace. I guess, by default, the option to suppress 
> warnings from the std library is enabled. Which makes sense, except in this 
> case since `unique_ptr` is in std and it is being used in that function, the 
> bug report is suppressed.

This is what causes the false suppression. To be more specific, the analyzer 
tries to follow the logic of the //destructor// of `unique_ptr` into the 
standard library. And since that is in the `std` namespace, it causes 
`LikelyFalsePositiveSuppressionBRVisitor::finalizeVisitor()`  to squelch the 
report. Now there are two problems here:

- Why does the analyzer try to follow the logic into the standard library? Is 
it because we haven't explicitly modeled it? (Then, as you said, modelling this 
method will solve the issue).
- Why is there a bug in `unique_ptr.h`? (This is the worse of the two, IMO). I 
am going to take a look at the standard library code (sigh) and see if that's 
an actual bug or another false positive.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D98726/new/

https://reviews.llvm.org/D98726

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to