diff options
Diffstat (limited to 'tests/pthread_test.cpp')
| -rw-r--r-- | tests/pthread_test.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/tests/pthread_test.cpp b/tests/pthread_test.cpp index e400b84..da945b4 100644 --- a/tests/pthread_test.cpp +++ b/tests/pthread_test.cpp @@ -109,3 +109,20 @@ TEST(pthread, pthread_join_self) { void* result; ASSERT_EQ(EDEADLK, pthread_join(pthread_self(), &result)); } + +#if __BIONIC__ // For some reason, gtest on bionic can cope with this but gtest on glibc can't. + +static void TestBug37410() { + pthread_t t1; + ASSERT_EQ(0, pthread_create(&t1, NULL, JoinFn, reinterpret_cast<void*>(pthread_self()))); + pthread_exit(NULL); +} + +// We have to say "DeathTest" here so gtest knows to run this test (which exits) +// in its own process. +TEST(pthread_DeathTest, pthread_bug_37410) { + // http://code.google.com/p/android/issues/detail?id=37410 + ::testing::FLAGS_gtest_death_test_style = "threadsafe"; + EXPECT_EXIT(TestBug37410(), ::testing::ExitedWithCode(0), ""); +} +#endif |
