Commit 13550f96 authored by Jim Meyering's avatar Jim Meyering Committed by Dave Watson

folly: avoid false-positive ASAN-abort from SignalHandlerTest

Summary:
Without this change, the sig-handling test's deliberate
invalid access would trigger an ASAN-abort, which differed
from the expected SEGV.  Skip this test when ASAN is enabled.
* folly/experimental/symbolizer/test/SignalHandlerTest.cpp: Include
CPortability.h for definion of FOLLY_SANITIZE_ADDRESS.
(SignalHandler) [FOLLY_SANITIZE_ADDRESS]: Provide a different
regexp to match the first line of output from an ASAN-enabled binary.

Test Plan:
fbconfig --sanitize=address --platform-all=gcc-4.8.1-glibc-2.17 \
folly/experimental/symbolizer/test:signal_handler_test \
&& fbmake --fast runtests \
&& fbmake --fast runtests_opt

Sample output, before this change: https://phabricator.fb.com/P5428975
(search down to first AddressSanitizer abort.
With this change, expect that test to pass.

Reviewed By: lucian@fb.com

FB internal diff: D1164768
parent 0a906712
...@@ -21,6 +21,7 @@ ...@@ -21,6 +21,7 @@
#include "folly/FileUtil.h" #include "folly/FileUtil.h"
#include "folly/Range.h" #include "folly/Range.h"
#include "folly/CPortability.h"
namespace folly { namespace symbolizer { namespace test { namespace folly { namespace symbolizer { namespace test {
...@@ -49,6 +50,11 @@ TEST(SignalHandler, Simple) { ...@@ -49,6 +50,11 @@ TEST(SignalHandler, Simple) {
EXPECT_DEATH( EXPECT_DEATH(
failHard(), failHard(),
#ifdef FOLLY_SANITIZE_ADDRESS
// Testing an ASAN-enabled binary evokes a different diagnostic.
// Use a regexp that requires only the first line of that output:
"^ASAN:SIGSEGV\n.*"
#else
"^\\*\\*\\* Aborted at [0-9]+ \\(Unix time, try 'date -d @[0-9]+'\\) " "^\\*\\*\\* Aborted at [0-9]+ \\(Unix time, try 'date -d @[0-9]+'\\) "
"\\*\\*\\*\n" "\\*\\*\\*\n"
"\\*\\*\\* Signal 11 \\(SIGSEGV\\) \\(0x2a\\) received by PID [0-9]+ " "\\*\\*\\* Signal 11 \\(SIGSEGV\\) \\(0x2a\\) received by PID [0-9]+ "
...@@ -61,6 +67,7 @@ TEST(SignalHandler, Simple) { ...@@ -61,6 +67,7 @@ TEST(SignalHandler, Simple) {
".*\n" ".*\n"
"Callback1\n" "Callback1\n"
"Callback2\n" "Callback2\n"
#endif
); );
} }
......
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