From 62dbf939bc2c7c495828fe03b7e7025b2cbe4a9d Mon Sep 17 00:00:00 2001 From: Pavlo Kushnir Date: Wed, 13 May 2015 16:23:26 -0700 Subject: [PATCH] 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 --- folly/experimental/fibers/Fiber.cpp | 4 ++++ folly/experimental/fibers/Fiber.h | 3 +-- 2 files changed, 5 insertions(+), 2 deletions(-) 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); -- 2.34.1