Compare commits
31 Commits
marshmallo
...
android-6.
Author | SHA1 | Date | |
---|---|---|---|
![]() |
984ffc98f3 | ||
![]() |
01030c24b0 | ||
![]() |
22af16f113 | ||
![]() |
0aa018ccc0 | ||
![]() |
b97c8b4024 | ||
![]() |
2e8ac0b72c | ||
![]() |
b6b6fcfa31 | ||
![]() |
f117eb873b | ||
![]() |
89fddb56ed | ||
![]() |
b530200ef3 | ||
![]() |
d5887751b2 | ||
![]() |
2cddffe900 | ||
![]() |
04363e4437 | ||
![]() |
01c72f8c1c | ||
![]() |
0e7aca1dff | ||
![]() |
1a78032e30 | ||
![]() |
64eb843f74 | ||
![]() |
8b18a3c922 | ||
![]() |
741df2881b | ||
![]() |
9660d32e74 | ||
![]() |
2ff7422771 | ||
![]() |
3619d6b922 | ||
![]() |
2783166c35 | ||
![]() |
c3351ea94d | ||
![]() |
730c0a475c | ||
![]() |
c8e23a4c1a | ||
![]() |
4d49212a5f | ||
![]() |
aa3ef00a43 | ||
![]() |
304307243f | ||
![]() |
51d3926d8a | ||
![]() |
4cb434df9b |
@@ -130,8 +130,13 @@ __LIBC_HIDDEN__ void pthread_key_clean_all(void);
|
||||
*/
|
||||
#define PTHREAD_STACK_SIZE_DEFAULT ((1 * 1024 * 1024) - SIGSTKSZ)
|
||||
|
||||
/* Leave room for a guard page in the internally created signal stacks. */
|
||||
// Leave room for a guard page in the internally created signal stacks.
|
||||
#if defined(__LP64__)
|
||||
// SIGSTKSZ is not big enough for 64-bit arch. See http://b/23041777.
|
||||
#define SIGNAL_STACK_SIZE (16 * 1024 + PAGE_SIZE)
|
||||
#else
|
||||
#define SIGNAL_STACK_SIZE (SIGSTKSZ + PAGE_SIZE)
|
||||
#endif
|
||||
|
||||
/* Needed by fork. */
|
||||
__LIBC_HIDDEN__ extern void __bionic_atfork_run_prepare();
|
||||
|
@@ -241,12 +241,7 @@ libBionicCtsGtestMain_src_files := gtest_main.cpp
|
||||
|
||||
libBionicCtsGtestMain_cflags := $(test_cflags)
|
||||
|
||||
libBionicCtsGtestMain_cppflags := $(test_cppflags) -DUSING_GTEST_OUTPUT_FORMAT \
|
||||
|
||||
# Temporarily fix the job count to 1 for CTS since on some devices the
|
||||
# number of online cores is incorrectly read as the total number of cores
|
||||
# in the system. When b/24376925 is fixed, this should be removed.
|
||||
libBionicCtsGtestMain_cppflags += -DJOB_COUNT_FIXED=1
|
||||
libBionicCtsGtestMain_cppflags := $(test_cppflags) -DUSING_GTEST_OUTPUT_FORMAT
|
||||
|
||||
module := libBionicCtsGtestMain
|
||||
module_tag := optional
|
||||
|
@@ -59,7 +59,7 @@ using testing::internal::COLOR_GREEN;
|
||||
using testing::internal::COLOR_YELLOW;
|
||||
using testing::internal::ColoredPrintf;
|
||||
|
||||
constexpr int DEFAULT_GLOBAL_TEST_RUN_DEADLINE_MS = 90000;
|
||||
constexpr int DEFAULT_GLOBAL_TEST_RUN_DEADLINE_MS = 60000;
|
||||
constexpr int DEFAULT_GLOBAL_TEST_RUN_WARNLINE_MS = 2000;
|
||||
|
||||
// The time each test can run before killed for the reason of timeout.
|
||||
@@ -839,12 +839,8 @@ static bool RunTestInSeparateProc(int argc, char** argv, std::vector<TestCase>&
|
||||
return all_tests_passed;
|
||||
}
|
||||
|
||||
static size_t GetDefaultJobCount() {
|
||||
#if defined(JOB_COUNT_FIXED)
|
||||
return JOB_COUNT_FIXED;
|
||||
#else
|
||||
static size_t GetProcessorCount() {
|
||||
return static_cast<size_t>(sysconf(_SC_NPROCESSORS_ONLN));
|
||||
#endif
|
||||
}
|
||||
|
||||
static void AddPathSeparatorInTestProgramPath(std::vector<char*>& args) {
|
||||
@@ -954,7 +950,7 @@ static bool PickOptions(std::vector<char*>& args, IsolationTestOptions& options)
|
||||
}
|
||||
|
||||
// Init default isolation test options.
|
||||
options.job_count = GetDefaultJobCount();
|
||||
options.job_count = GetProcessorCount();
|
||||
options.test_deadline_ms = DEFAULT_GLOBAL_TEST_RUN_DEADLINE_MS;
|
||||
options.test_warnline_ms = DEFAULT_GLOBAL_TEST_RUN_WARNLINE_MS;
|
||||
options.gtest_color = testing::GTEST_FLAG(color);
|
||||
|
31
tests/pthread_test.cpp
Executable file → Normal file
31
tests/pthread_test.cpp
Executable file → Normal file
@@ -27,6 +27,7 @@
|
||||
#include <sys/syscall.h>
|
||||
#include <time.h>
|
||||
#include <unistd.h>
|
||||
#include <unwind.h>
|
||||
|
||||
#include <atomic>
|
||||
#include <regex>
|
||||
@@ -1244,11 +1245,8 @@ TEST(pthread, pthread_attr_getstack_18908062) {
|
||||
}
|
||||
|
||||
#if defined(__BIONIC__)
|
||||
static pthread_mutex_t gettid_mutex;
|
||||
static void* pthread_gettid_np_helper(void* arg) {
|
||||
pthread_mutex_lock(&gettid_mutex);
|
||||
*reinterpret_cast<pid_t*>(arg) = gettid();
|
||||
pthread_mutex_unlock(&gettid_mutex);
|
||||
return NULL;
|
||||
}
|
||||
#endif
|
||||
@@ -1259,15 +1257,11 @@ TEST(pthread, pthread_gettid_np) {
|
||||
|
||||
pid_t t_gettid_result;
|
||||
pthread_t t;
|
||||
pthread_mutex_init(&gettid_mutex, NULL);
|
||||
pthread_mutex_lock(&gettid_mutex);
|
||||
pthread_create(&t, NULL, pthread_gettid_np_helper, &t_gettid_result);
|
||||
|
||||
pid_t t_pthread_gettid_np_result = pthread_gettid_np(t);
|
||||
pthread_mutex_unlock(&gettid_mutex);
|
||||
|
||||
pthread_join(t, NULL);
|
||||
pthread_mutex_destroy(&gettid_mutex);
|
||||
|
||||
ASSERT_EQ(t_gettid_result, t_pthread_gettid_np_result);
|
||||
#else
|
||||
@@ -1578,3 +1572,26 @@ TEST_F(pthread_DeathTest, pthread_mutex_unlock_null_64) {
|
||||
GTEST_LOG_(INFO) << "This test tests bionic implementation details on 64 bit devices.";
|
||||
#endif
|
||||
}
|
||||
|
||||
extern _Unwind_Reason_Code FrameCounter(_Unwind_Context* ctx, void* arg);
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
TEST(pthread, big_enough_signal_stack_for_64bit_arch) {
|
||||
signal_handler_on_altstack_done = false;
|
||||
ScopedSignalHandler handler(SIGUSR1, SignalHandlerOnAltStack, SA_SIGINFO | SA_ONSTACK);
|
||||
kill(getpid(), SIGUSR1);
|
||||
ASSERT_TRUE(signal_handler_on_altstack_done);
|
||||
}
|
||||
|
@@ -34,7 +34,7 @@
|
||||
#define noinline __attribute__((__noinline__))
|
||||
#define __unused __attribute__((__unused__))
|
||||
|
||||
static _Unwind_Reason_Code FrameCounter(_Unwind_Context* ctx __unused, void* arg) {
|
||||
_Unwind_Reason_Code FrameCounter(_Unwind_Context* ctx __unused, void* arg) {
|
||||
int* count_ptr = reinterpret_cast<int*>(arg);
|
||||
|
||||
#if SHOW_FRAME_LOCATIONS
|
||||
|
Reference in New Issue
Block a user