summaryrefslogtreecommitdiff
path: root/tests/pthread_test.cpp
diff options
context:
space:
mode:
authorJosh Gao <jmgao@google.com>2017-03-06 17:45:33 -0800
committerJosh Gao <jmgao@google.com>2017-03-08 16:43:59 -0800
commit415daa8cca875d348c003a95cf7c44c9231eae75 (patch)
tree0846b1476c61bb7d870fc8e031099d634c0c2e3c /tests/pthread_test.cpp
parente429bf2f696282537efb577feb7cb9fd534e7ace (diff)
Increase signal stack size on 32-bit to 16kB.
snprintf to a buffer of length PATH_MAX consumes about 7kB of stack. Bug: http://b/35858739 Test: bionic-unit-tests --gtest_filter="*big_enough*" Change-Id: I34a7f42c1fd2582ca0d0a9b7e7a5290bc1cc19b1
Diffstat (limited to 'tests/pthread_test.cpp')
-rwxr-xr-xtests/pthread_test.cpp27
1 files changed, 18 insertions, 9 deletions
diff --git a/tests/pthread_test.cpp b/tests/pthread_test.cpp
index 024a6754e..4fb15ad8a 100755
--- a/tests/pthread_test.cpp
+++ b/tests/pthread_test.cpp
@@ -1888,17 +1888,26 @@ static volatile bool signal_handler_on_altstack_done;
static void SignalHandlerOnAltStack(int signo, siginfo_t*, void*) {
ASSERT_EQ(SIGUSR1, signo);
- // Check if we have enough stack space for unwinding.
- int count = 0;
- _Unwind_Backtrace(FrameCounter, &count);
- ASSERT_GT(count, 0);
- // Check if we have enough stack space for logging.
- std::string s(2048, '*');
- GTEST_LOG_(INFO) << s;
- signal_handler_on_altstack_done = true;
+ {
+ // Check if we have enough stack space for unwinding.
+ int count = 0;
+ _Unwind_Backtrace(FrameCounter, &count);
+ ASSERT_GT(count, 0);
+ }
+ {
+ // Check if we have enough stack space for logging.
+ std::string s(2048, '*');
+ GTEST_LOG_(INFO) << s;
+ signal_handler_on_altstack_done = true;
+ }
+ {
+ // Check if we have enough stack space for snprintf to a PATH_MAX buffer, plus some extra.
+ char buf[PATH_MAX + 2048];
+ ASSERT_GT(snprintf(buf, sizeof(buf), "/proc/%d/status", getpid()), 0);
+ }
}
-TEST(pthread, big_enough_signal_stack_for_64bit_arch) {
+TEST(pthread, big_enough_signal_stack) {
signal_handler_on_altstack_done = false;
ScopedSignalHandler handler(SIGUSR1, SignalHandlerOnAltStack, SA_SIGINFO | SA_ONSTACK);
kill(getpid(), SIGUSR1);