Fix ASAN integration with detect_stack_use_after_return turned on
authorAndrii Grynenko <andrii@fb.com>
Wed, 1 Mar 2017 18:37:55 +0000 (10:37 -0800)
committerFacebook Github Bot <facebook-github-bot@users.noreply.github.com>
Wed, 1 Mar 2017 18:49:46 +0000 (10:49 -0800)
commit58285440f100065fcc2f4357507bfd6ac8efd463
tree6e8fd2f3fe154079d80154a1592df6539a672497
parent94a3d5d31413b318d8a978b003e0f93ddf44a617
Fix ASAN integration with detect_stack_use_after_return turned on

Summary: detect_stack_use_after_return enables fake stack logic. Previous implementation was relying on fiber releasing its fake stack before switch, which is not safe, because that fake stack may actually be in use. This diff implements a hacky workaround by building a freeFakeStack function, which can release fake stack outside of the fiber. Ideally this function should be provided by ASAN itself.

Reviewed By: yfeldblum

Differential Revision: D4631962

fbshipit-source-id: 6213e2a6b3cbc35fae3793fcf86b0614dd8ff825
folly/fibers/Fiber.cpp
folly/fibers/FiberManager.cpp
folly/fibers/FiberManagerInternal-inl.h
folly/fibers/FiberManagerInternal.h