Commit a447cb9e authored by Jim Meyering's avatar Jim Meyering Committed by Facebook Github Bot

folly/fibers/test/FibersTest.cpp: accommodate ASAN's detect_stack_use_after_return=1

Summary:
With ASAN enabled (actually, only with ASAN *and* its detect_stack_use_after_return=1 option),
the addTaskFinally test would fail.  This adapts to accommodate the larger stack offsets.
Also, use EXPECT_GT and EXPECT_LT rather than EXPECT_TRUE.

Reviewed By: yfeldblum

Differential Revision: D6353666

fbshipit-source-id: 39e04caffa7b24cde97c749686c7e651a071dcec
parent 8b51694b
......@@ -903,12 +903,18 @@ namespace {
void expectMainContext(bool& ran, int* mainLocation, int* fiberLocation) {
int here;
/* 2 pages is a good guess */
constexpr ssize_t DISTANCE = 0x2000 / sizeof(int);
constexpr auto const kHereToFiberMaxDist = 0x2000 / sizeof(int);
// With ASAN's detect_stack_use_after_return=1, this must be much larger
// I measured 410028 on x86_64, so allow for quadruple that, just in case.
constexpr auto const kHereToMainMaxDist =
folly::kIsSanitizeAddress ? 4 * 410028 : kHereToFiberMaxDist;
if (fiberLocation) {
EXPECT_TRUE(std::abs(&here - fiberLocation) > DISTANCE);
EXPECT_GT(std::abs(&here - fiberLocation), kHereToFiberMaxDist);
}
if (mainLocation) {
EXPECT_TRUE(std::abs(&here - mainLocation) < DISTANCE);
EXPECT_LT(std::abs(&here - mainLocation), kHereToMainMaxDist);
}
EXPECT_FALSE(ran);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment