Move FOLLY_DISABLE_ADDRESS_SANITIZER from Fiber::init()'s definition to declaration
authorSergey Doroshenko <sdoroshenko@fb.com>
Mon, 4 May 2015 19:32:52 +0000 (12:32 -0700)
committerPraveen Kumar Ramakrishnan <praveenr@fb.com>
Tue, 12 May 2015 00:02:13 +0000 (17:02 -0700)
Summary:
I just had topaggr built from trunk crash with https://phabricator.fb.com/P19825084. It seems that
placing `FOLLY_DISABLE_ADDRESS_SANITIZER` next to the function definition has no effect. Though
what's strange, https://phabricator.fb.com/D2036280 test plan says the false-positive crashes
stopped after that diff. Have we run the tao script on the latest revisions of that diff? Anyway,
clang/gcc docs clearly say the attributes belong to declarations, not definitions, so let's do that.

Test Plan:
Compiled, unit tests.

Reviewed By: aap@fb.com

Subscribers: folly-diffs@, yfeldblum, chalfant, soren

FB internal diff: D2042149

Signature: t1:2042149:1430681824:aea21b9a1fcddfd5585180ba7f526c3a6ee0c8bf

folly/experimental/fibers/Fiber.cpp
folly/experimental/fibers/Fiber.h

index 3b5e01c82d18b8b7e8c0168c7c0120540fd12130..19d4b19835f35c73b3716a284be853536d23c5b9 100644 (file)
@@ -23,7 +23,6 @@
 #include <cstring>
 #include <stdexcept>
 
-#include <folly/CPortability.h>
 #include <folly/Likely.h>
 #include <folly/Portability.h>
 #include <folly/experimental/fibers/BoostContextCompatibility.h>
@@ -78,8 +77,6 @@ Fiber::Fiber(FiberManager& fiberManager) :
   fcontext_ = makeContext(limit, size, &Fiber::fiberFuncHelper);
 }
 
-// It is necessary to disable ASAN because this function changes fiber's stack.
-FOLLY_DISABLE_ADDRESS_SANITIZER
 void Fiber::init(bool recordStackUsed) {
   recordStackUsed_ = recordStackUsed;
   if (UNLIKELY(recordStackUsed_ && !stackFilledWithMagic_)) {
index 2c56efa9a8026ea0a4eaa14df5200e1e689d9db0..b0b63b6f4ab97981e8434f47e1b12b1674b27ccb 100644 (file)
@@ -21,6 +21,7 @@
 #include <boost/context/all.hpp>
 #include <boost/version.hpp>
 #include <folly/AtomicLinkedList.h>
+#include <folly/CPortability.h>
 #include <folly/IntrusiveList.h>
 #include <folly/experimental/fibers/BoostContextCompatibility.h>
 
@@ -69,7 +70,9 @@ class Fiber {
   friend class FiberManager;
 
   explicit Fiber(FiberManager& fiberManager);
-  void init(bool recordStackUsed);
+
+  // It is necessary to disable ASAN because init() changes the fiber's stack.
+  void init(bool recordStackUsed) FOLLY_DISABLE_ADDRESS_SANITIZER;
 
   template <typename F>
   void setFunction(F&& func);