[PATCH] D12318: [ASan] Enable optional ASan recovery

Alexey Samsonov via llvm-commits llvm-commits at lists.llvm.org
Mon Sep 21 16:46:11 PDT 2015


samsonov added inline comments.

================
Comment at: lib/asan/asan_internal.h:122
@@ +121,3 @@
+// unnecessary.
+static inline bool QuickCheckSilence(bool is_error) {
+  if (LIKELY(flags()->halt_on_error))
----------------
ygribov wrote:
> kcc wrote:
> > I don't like the name, 
> > I don't like the fact that it has a parameter, 
> > I don't like that it's static inline, 
> > I don't like its behavior. 
> > 
> > We have two situations: 
> > 1. We are reporting an error and don't want to do it (is_error=true). 
> > There is no harm in making this function non-inline in this case. 
> > bool WantToReportMoreError(); 
> > 
> > 2. We don't know whether there will be an error, but we are shutting down the checking functionality
> > just in case (or to win a bit of performance). 
> > I don't think we need to do this at all. 
> > The win is not clear, but the added complexity is. 
> > 
> > 
> Problem is that lack of this check would cause program to crawl in some cases. But ok, this may live in a private branch.
The name is really confusing. It should be smth. like `IgnoreError`. Also, instead of passing `is_error` as a parameter, and doing conditional atomic_fetch_add, can you just split this function into two: one would check if need to ignore the error (halt_on_error is true, or number of reported errors is too large already), and another one would increment the number of detected errors. (could you then call the latter one from `ScopedInErrorReport` constructor)?

Can you make it ALWAYS_INLINE?

================
Comment at: lib/asan/asan_report.cc:698
@@ +697,3 @@
+  static StaticSpinMutex lock;
+  static u32 reporting_thread_tid;
+  bool halt_on_error;
----------------
ygribov wrote:
> kcc wrote:
> > class members have the  _ suffix. 
> I'm not sure that's true for statics, I see numerous places where they aren't undered.
There are no trailing _ in simple structs, but there should be in classes.


Repository:
  rL LLVM

http://reviews.llvm.org/D12318





More information about the llvm-commits mailing list