From: Pavlo Kushnir Date: Wed, 13 May 2015 23:23:26 +0000 (-0700) Subject: Disable stack recording with ASAN X-Git-Tag: v0.39.0~18 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=62dbf939bc2c7c495828fe03b7e7025b2cbe4a9d;p=folly.git Disable stack recording with ASAN Summary: ASAN crashes on std::fill and doesn't respect no_sanitize_address attribute for some reason. Test Plan: run fibers-test with ASAN Reviewed By: stepan@fb.com Subscribers: trunkagent, folly-diffs@, yfeldblum, chalfant FB internal diff: D2069437 Signature: t1:2069437:1431547972:7d2c7a6547f8d76b309a76ef69fd19a1de4ce261 --- diff --git a/folly/experimental/fibers/Fiber.cpp b/folly/experimental/fibers/Fiber.cpp index 19d4b198..40e94641 100644 --- a/folly/experimental/fibers/Fiber.cpp +++ b/folly/experimental/fibers/Fiber.cpp @@ -78,6 +78,9 @@ Fiber::Fiber(FiberManager& fiberManager) : } void Fiber::init(bool recordStackUsed) { +// It is necessary to disable the logic for ASAN because we change +// the fiber's stack. +#ifndef FOLLY_SANITIZE_ADDRESS recordStackUsed_ = recordStackUsed; if (UNLIKELY(recordStackUsed_ && !stackFilledWithMagic_)) { auto limit = fcontext_.stackLimit(); @@ -94,6 +97,7 @@ void Fiber::init(bool recordStackUsed) { stackFilledWithMagic_ = true; } +#endif } Fiber::~Fiber() { diff --git a/folly/experimental/fibers/Fiber.h b/folly/experimental/fibers/Fiber.h index b0b63b6f..5dbb4878 100644 --- a/folly/experimental/fibers/Fiber.h +++ b/folly/experimental/fibers/Fiber.h @@ -71,8 +71,7 @@ class Fiber { explicit Fiber(FiberManager& fiberManager); - // It is necessary to disable ASAN because init() changes the fiber's stack. - void init(bool recordStackUsed) FOLLY_DISABLE_ADDRESS_SANITIZER; + void init(bool recordStackUsed); template void setFunction(F&& func);