| File: | jdk/test/hotspot/gtest/runtime/test_mutex.cpp |
| Warning: | line 298, column 12 Value stored to 'monitor_rank_broken' during its initialization is never read |
Press '?' to see keyboard shortcuts
Keyboard shortcuts:
| 1 | /* |
| 2 | * Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved. |
| 3 | * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
| 4 | * |
| 5 | * This code is free software; you can redistribute it and/or modify it |
| 6 | * under the terms of the GNU General Public License version 2 only, as |
| 7 | * published by the Free Software Foundation. |
| 8 | * |
| 9 | * This code is distributed in the hope that it will be useful, but WITHOUT |
| 10 | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
| 11 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
| 12 | * version 2 for more details (a copy is included in the LICENSE file that |
| 13 | * accompanied this code). |
| 14 | * |
| 15 | * You should have received a copy of the GNU General Public License version |
| 16 | * 2 along with this work; if not, write to the Free Software Foundation, |
| 17 | * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
| 18 | * |
| 19 | * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
| 20 | * or visit www.oracle.com if you need additional information or have any |
| 21 | * questions. |
| 22 | */ |
| 23 | |
| 24 | #include "precompiled.hpp" |
| 25 | #include "runtime/interfaceSupport.inline.hpp" |
| 26 | #include "runtime/mutex.hpp" |
| 27 | #include "runtime/mutexLocker.hpp" |
| 28 | #include "runtime/thread.hpp" |
| 29 | #include "utilities/formatBuffer.hpp" |
| 30 | #include "threadHelper.inline.hpp" |
| 31 | #include "unittest.hpp" |
| 32 | |
| 33 | const int iterations = 10; |
| 34 | static Mutex* m[iterations]; |
| 35 | static int i = 0; |
| 36 | |
| 37 | static void create_mutex(Thread* thr) { |
| 38 | m[i] = new Mutex(Mutex::nosafepoint, FormatBuffer<128>("MyLock#%u_lock", i)); |
| 39 | i++; |
| 40 | } |
| 41 | |
| 42 | TEST_VM(MutexName, mutex_name)class MutexName_mutex_name_vm_Test : public ::testing::Test { public: MutexName_mutex_name_vm_Test() {} private: virtual void TestBody(); static ::testing::TestInfo* const test_info_ __attribute__ ((unused)); MutexName_mutex_name_vm_Test(MutexName_mutex_name_vm_Test const &) = delete; void operator=(MutexName_mutex_name_vm_Test const &) = delete;};::testing::TestInfo* const MutexName_mutex_name_vm_Test ::test_info_ = ::testing::internal::MakeAndRegisterTestInfo( "MutexName", "mutex_name_vm", __null, __null, ::testing::internal ::CodeLocation("/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 42), (::testing::internal::GetTestTypeId()), ::testing::Test ::SetUpTestCase, ::testing::Test::TearDownTestCase, new ::testing ::internal::TestFactoryImpl< MutexName_mutex_name_vm_Test> );void MutexName_mutex_name_vm_Test::TestBody() { |
| 43 | // Create mutexes in threads, where the names are created on the thread |
| 44 | // stacks and then check that their names are correct. |
| 45 | for (int i = 0; i < iterations; i++) { |
| 46 | nomt_test_doer(create_mutex); |
| 47 | } |
| 48 | for (int i = 0; i < iterations; i++) { |
| 49 | FormatBuffer<128> f("MyLock#%u_lock", i); |
| 50 | ASSERT_STREQ(m[i]->name(), f.buffer())switch (0) case 0: default: if (const ::testing::AssertionResult gtest_ar = (::testing::internal::CmpHelperSTREQ("m[i]->name()" , "f.buffer()", m[i]->name(), f.buffer()))) ; else return :: testing::internal::AssertHelper(::testing::TestPartResult::kFatalFailure , "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 50, gtest_ar.failure_message()) = ::testing::Message() << "Wrong name!"; |
| 51 | } |
| 52 | } |
| 53 | |
| 54 | #ifdef ASSERT1 |
| 55 | |
| 56 | const Mutex::Rank rankA = Mutex::safepoint-5; |
| 57 | const Mutex::Rank rankAplusOne = Mutex::safepoint-4; |
| 58 | const Mutex::Rank rankAplusTwo = Mutex::safepoint-3; |
| 59 | |
| 60 | TEST_OTHER_VM(MutexRank, mutex_lock_rank_in_order)static void test_MutexRank_mutex_lock_rank_in_order_(); static void child_MutexRank_mutex_lock_rank_in_order_() { ::testing ::FLAGS_gtest_throw_on_failure = true; test_MutexRank_mutex_lock_rank_in_order_ (); JavaVM* jvm[1]; jsize nVMs = 0; JNI_GetCreatedJavaVMs(& jvm[0], 1, &nVMs); if (nVMs == 1) { int ret = jvm[0]-> DestroyJavaVM(); if (ret != 0) { fprintf(stderr, "Warning: DestroyJavaVM error %d\n" , ret); } } fprintf(stderr, "OKIDOKI"); exit(0); } class MutexRank_mutex_lock_rank_in_order_other_vm_Test : public ::testing::Test { public: MutexRank_mutex_lock_rank_in_order_other_vm_Test () {} private: virtual void TestBody(); static ::testing::TestInfo * const test_info_ __attribute__ ((unused)); MutexRank_mutex_lock_rank_in_order_other_vm_Test (MutexRank_mutex_lock_rank_in_order_other_vm_Test const & ) = delete; void operator=(MutexRank_mutex_lock_rank_in_order_other_vm_Test const &) = delete;};::testing::TestInfo* const MutexRank_mutex_lock_rank_in_order_other_vm_Test ::test_info_ = ::testing::internal::MakeAndRegisterTestInfo( "MutexRank", "mutex_lock_rank_in_order_other_vm", __null, __null , ::testing::internal::CodeLocation("/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 60), (::testing::internal::GetTestTypeId()), ::testing::Test ::SetUpTestCase, ::testing::Test::TearDownTestCase, new ::testing ::internal::TestFactoryImpl< MutexRank_mutex_lock_rank_in_order_other_vm_Test >);void MutexRank_mutex_lock_rank_in_order_other_vm_Test:: TestBody() { switch (0) case 0: default: if (::testing::internal ::AlwaysTrue()) { const ::testing::internal::RE& gtest_regex = (".*OKIDOKI.*"); ::testing::internal::DeathTest* gtest_dt; if (!::testing::internal::DeathTest::Create("child_MutexRank_mutex_lock_rank_in_order_()" , >est_regex, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 60, >est_dt)) { goto gtest_label_60; } if (gtest_dt != __null) { ::testing::internal::scoped_ptr< ::testing::internal ::DeathTest> gtest_dt_ptr(gtest_dt); switch (gtest_dt-> AssumeRole()) { case ::testing::internal::DeathTest::OVERSEE_TEST : if (!gtest_dt->Passed(::testing::ExitedWithCode(0)(gtest_dt ->Wait()))) { goto gtest_label_60; } break; case ::testing ::internal::DeathTest::EXECUTE_TEST: { ::testing::internal::DeathTest ::ReturnSentinel gtest_sentinel(gtest_dt); if (::testing::internal ::AlwaysTrue()) { child_MutexRank_mutex_lock_rank_in_order_() ; }; gtest_dt->Abort(::testing::internal::DeathTest::TEST_DID_NOT_DIE ); break; } default: break; } } } else gtest_label_60: return ::testing::internal::AssertHelper(::testing::TestPartResult:: kFatalFailure, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 60, ::testing::internal::DeathTest::LastMessage()) = ::testing ::Message(); } void test_MutexRank_mutex_lock_rank_in_order_( ) { |
| 61 | JavaThread* THREAD__the_thread__ = JavaThread::current(); |
| 62 | ThreadInVMfromNative invm(THREAD__the_thread__); |
| 63 | |
| 64 | Mutex* mutex_rankA = new Mutex(rankA, "mutex_rankA"); |
| 65 | Mutex* mutex_rankA_plus_one = new Mutex(rankAplusOne, "mutex_rankA_plus_one"); |
| 66 | |
| 67 | mutex_rankA_plus_one->lock(); |
| 68 | mutex_rankA->lock(); |
| 69 | mutex_rankA->unlock(); |
| 70 | mutex_rankA_plus_one->unlock(); |
| 71 | } |
| 72 | |
| 73 | TEST_VM_ASSERT_MSG(MutexRank, mutex_lock_rank_out_of_orderA,static void test_MutexRank_mutex_lock_rank_out_of_orderA_(); static void child_MutexRank_mutex_lock_rank_out_of_orderA_() { ::testing ::FLAGS_gtest_throw_on_failure = true; test_MutexRank_mutex_lock_rank_out_of_orderA_ (); exit(0); } class MutexRank_mutex_lock_rank_out_of_orderA_vm_assert_Test : public ::testing::Test { public: MutexRank_mutex_lock_rank_out_of_orderA_vm_assert_Test () {} private: virtual void TestBody(); static ::testing::TestInfo * const test_info_ __attribute__ ((unused)); MutexRank_mutex_lock_rank_out_of_orderA_vm_assert_Test (MutexRank_mutex_lock_rank_out_of_orderA_vm_assert_Test const &) = delete; void operator=(MutexRank_mutex_lock_rank_out_of_orderA_vm_assert_Test const &) = delete;};::testing::TestInfo* const MutexRank_mutex_lock_rank_out_of_orderA_vm_assert_Test ::test_info_ = ::testing::internal::MakeAndRegisterTestInfo( "MutexRank", "mutex_lock_rank_out_of_orderA_vm_assert", __null , __null, ::testing::internal::CodeLocation("/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 74), (::testing::internal::GetTestTypeId()), ::testing::Test ::SetUpTestCase, ::testing::Test::TearDownTestCase, new ::testing ::internal::TestFactoryImpl< MutexRank_mutex_lock_rank_out_of_orderA_vm_assert_Test >);void MutexRank_mutex_lock_rank_out_of_orderA_vm_assert_Test ::TestBody() { switch (0) case 0: default: if (::testing::internal ::AlwaysTrue()) { const ::testing::internal::RE& gtest_regex = ("assert failed: " ".* Attempting to acquire lock mutex_rankA_plus_one/safepoint-4 out of order with lock mutex_rankA/safepoint-5 -- possible deadlock" ); ::testing::internal::DeathTest* gtest_dt; if (!::testing:: internal::DeathTest::Create("child_MutexRank_mutex_lock_rank_out_of_orderA_()" , >est_regex, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 74, >est_dt)) { goto gtest_label_74; } if (gtest_dt != __null) { ::testing::internal::scoped_ptr< ::testing::internal ::DeathTest> gtest_dt_ptr(gtest_dt); switch (gtest_dt-> AssumeRole()) { case ::testing::internal::DeathTest::OVERSEE_TEST : if (!gtest_dt->Passed(::testing::ExitedWithCode(1)(gtest_dt ->Wait()))) { goto gtest_label_74; } break; case ::testing ::internal::DeathTest::EXECUTE_TEST: { ::testing::internal::DeathTest ::ReturnSentinel gtest_sentinel(gtest_dt); if (::testing::internal ::AlwaysTrue()) { child_MutexRank_mutex_lock_rank_out_of_orderA_ (); }; gtest_dt->Abort(::testing::internal::DeathTest::TEST_DID_NOT_DIE ); break; } default: break; } } } else gtest_label_74: return ::testing::internal::AssertHelper(::testing::TestPartResult:: kFatalFailure, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 74, ::testing::internal::DeathTest::LastMessage()) = ::testing ::Message(); } void test_MutexRank_mutex_lock_rank_out_of_orderA_ () |
| 74 | ".* Attempting to acquire lock mutex_rankA_plus_one/safepoint-4 out of order with lock mutex_rankA/safepoint-5 -- possible deadlock")static void test_MutexRank_mutex_lock_rank_out_of_orderA_(); static void child_MutexRank_mutex_lock_rank_out_of_orderA_() { ::testing ::FLAGS_gtest_throw_on_failure = true; test_MutexRank_mutex_lock_rank_out_of_orderA_ (); exit(0); } class MutexRank_mutex_lock_rank_out_of_orderA_vm_assert_Test : public ::testing::Test { public: MutexRank_mutex_lock_rank_out_of_orderA_vm_assert_Test () {} private: virtual void TestBody(); static ::testing::TestInfo * const test_info_ __attribute__ ((unused)); MutexRank_mutex_lock_rank_out_of_orderA_vm_assert_Test (MutexRank_mutex_lock_rank_out_of_orderA_vm_assert_Test const &) = delete; void operator=(MutexRank_mutex_lock_rank_out_of_orderA_vm_assert_Test const &) = delete;};::testing::TestInfo* const MutexRank_mutex_lock_rank_out_of_orderA_vm_assert_Test ::test_info_ = ::testing::internal::MakeAndRegisterTestInfo( "MutexRank", "mutex_lock_rank_out_of_orderA_vm_assert", __null , __null, ::testing::internal::CodeLocation("/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 74), (::testing::internal::GetTestTypeId()), ::testing::Test ::SetUpTestCase, ::testing::Test::TearDownTestCase, new ::testing ::internal::TestFactoryImpl< MutexRank_mutex_lock_rank_out_of_orderA_vm_assert_Test >);void MutexRank_mutex_lock_rank_out_of_orderA_vm_assert_Test ::TestBody() { switch (0) case 0: default: if (::testing::internal ::AlwaysTrue()) { const ::testing::internal::RE& gtest_regex = ("assert failed: " ".* Attempting to acquire lock mutex_rankA_plus_one/safepoint-4 out of order with lock mutex_rankA/safepoint-5 -- possible deadlock" ); ::testing::internal::DeathTest* gtest_dt; if (!::testing:: internal::DeathTest::Create("child_MutexRank_mutex_lock_rank_out_of_orderA_()" , >est_regex, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 74, >est_dt)) { goto gtest_label_74; } if (gtest_dt != __null) { ::testing::internal::scoped_ptr< ::testing::internal ::DeathTest> gtest_dt_ptr(gtest_dt); switch (gtest_dt-> AssumeRole()) { case ::testing::internal::DeathTest::OVERSEE_TEST : if (!gtest_dt->Passed(::testing::ExitedWithCode(1)(gtest_dt ->Wait()))) { goto gtest_label_74; } break; case ::testing ::internal::DeathTest::EXECUTE_TEST: { ::testing::internal::DeathTest ::ReturnSentinel gtest_sentinel(gtest_dt); if (::testing::internal ::AlwaysTrue()) { child_MutexRank_mutex_lock_rank_out_of_orderA_ (); }; gtest_dt->Abort(::testing::internal::DeathTest::TEST_DID_NOT_DIE ); break; } default: break; } } } else gtest_label_74: return ::testing::internal::AssertHelper(::testing::TestPartResult:: kFatalFailure, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 74, ::testing::internal::DeathTest::LastMessage()) = ::testing ::Message(); } void test_MutexRank_mutex_lock_rank_out_of_orderA_ () { |
| 75 | JavaThread* THREAD__the_thread__ = JavaThread::current(); |
| 76 | ThreadInVMfromNative invm(THREAD__the_thread__); |
| 77 | |
| 78 | Mutex* mutex_rankA = new Mutex(rankA, "mutex_rankA"); |
| 79 | Mutex* mutex_rankA_plus_one = new Mutex(rankAplusOne, "mutex_rankA_plus_one"); |
| 80 | |
| 81 | mutex_rankA->lock(); |
| 82 | mutex_rankA_plus_one->lock(); |
| 83 | mutex_rankA_plus_one->unlock(); |
| 84 | mutex_rankA->unlock(); |
| 85 | } |
| 86 | |
| 87 | TEST_VM_ASSERT_MSG(MutexRank, mutex_lock_rank_out_of_orderB,static void test_MutexRank_mutex_lock_rank_out_of_orderB_(); static void child_MutexRank_mutex_lock_rank_out_of_orderB_() { ::testing ::FLAGS_gtest_throw_on_failure = true; test_MutexRank_mutex_lock_rank_out_of_orderB_ (); exit(0); } class MutexRank_mutex_lock_rank_out_of_orderB_vm_assert_Test : public ::testing::Test { public: MutexRank_mutex_lock_rank_out_of_orderB_vm_assert_Test () {} private: virtual void TestBody(); static ::testing::TestInfo * const test_info_ __attribute__ ((unused)); MutexRank_mutex_lock_rank_out_of_orderB_vm_assert_Test (MutexRank_mutex_lock_rank_out_of_orderB_vm_assert_Test const &) = delete; void operator=(MutexRank_mutex_lock_rank_out_of_orderB_vm_assert_Test const &) = delete;};::testing::TestInfo* const MutexRank_mutex_lock_rank_out_of_orderB_vm_assert_Test ::test_info_ = ::testing::internal::MakeAndRegisterTestInfo( "MutexRank", "mutex_lock_rank_out_of_orderB_vm_assert", __null , __null, ::testing::internal::CodeLocation("/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 88), (::testing::internal::GetTestTypeId()), ::testing::Test ::SetUpTestCase, ::testing::Test::TearDownTestCase, new ::testing ::internal::TestFactoryImpl< MutexRank_mutex_lock_rank_out_of_orderB_vm_assert_Test >);void MutexRank_mutex_lock_rank_out_of_orderB_vm_assert_Test ::TestBody() { switch (0) case 0: default: if (::testing::internal ::AlwaysTrue()) { const ::testing::internal::RE& gtest_regex = ("assert failed: " ".* Attempting to acquire lock mutex_rankB/.* out of order with lock mutex_rankA/.* -- possible deadlock" ); ::testing::internal::DeathTest* gtest_dt; if (!::testing:: internal::DeathTest::Create("child_MutexRank_mutex_lock_rank_out_of_orderB_()" , >est_regex, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 88, >est_dt)) { goto gtest_label_88; } if (gtest_dt != __null) { ::testing::internal::scoped_ptr< ::testing::internal ::DeathTest> gtest_dt_ptr(gtest_dt); switch (gtest_dt-> AssumeRole()) { case ::testing::internal::DeathTest::OVERSEE_TEST : if (!gtest_dt->Passed(::testing::ExitedWithCode(1)(gtest_dt ->Wait()))) { goto gtest_label_88; } break; case ::testing ::internal::DeathTest::EXECUTE_TEST: { ::testing::internal::DeathTest ::ReturnSentinel gtest_sentinel(gtest_dt); if (::testing::internal ::AlwaysTrue()) { child_MutexRank_mutex_lock_rank_out_of_orderB_ (); }; gtest_dt->Abort(::testing::internal::DeathTest::TEST_DID_NOT_DIE ); break; } default: break; } } } else gtest_label_88: return ::testing::internal::AssertHelper(::testing::TestPartResult:: kFatalFailure, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 88, ::testing::internal::DeathTest::LastMessage()) = ::testing ::Message(); } void test_MutexRank_mutex_lock_rank_out_of_orderB_ () |
| 88 | ".* Attempting to acquire lock mutex_rankB/.* out of order with lock mutex_rankA/.* -- possible deadlock")static void test_MutexRank_mutex_lock_rank_out_of_orderB_(); static void child_MutexRank_mutex_lock_rank_out_of_orderB_() { ::testing ::FLAGS_gtest_throw_on_failure = true; test_MutexRank_mutex_lock_rank_out_of_orderB_ (); exit(0); } class MutexRank_mutex_lock_rank_out_of_orderB_vm_assert_Test : public ::testing::Test { public: MutexRank_mutex_lock_rank_out_of_orderB_vm_assert_Test () {} private: virtual void TestBody(); static ::testing::TestInfo * const test_info_ __attribute__ ((unused)); MutexRank_mutex_lock_rank_out_of_orderB_vm_assert_Test (MutexRank_mutex_lock_rank_out_of_orderB_vm_assert_Test const &) = delete; void operator=(MutexRank_mutex_lock_rank_out_of_orderB_vm_assert_Test const &) = delete;};::testing::TestInfo* const MutexRank_mutex_lock_rank_out_of_orderB_vm_assert_Test ::test_info_ = ::testing::internal::MakeAndRegisterTestInfo( "MutexRank", "mutex_lock_rank_out_of_orderB_vm_assert", __null , __null, ::testing::internal::CodeLocation("/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 88), (::testing::internal::GetTestTypeId()), ::testing::Test ::SetUpTestCase, ::testing::Test::TearDownTestCase, new ::testing ::internal::TestFactoryImpl< MutexRank_mutex_lock_rank_out_of_orderB_vm_assert_Test >);void MutexRank_mutex_lock_rank_out_of_orderB_vm_assert_Test ::TestBody() { switch (0) case 0: default: if (::testing::internal ::AlwaysTrue()) { const ::testing::internal::RE& gtest_regex = ("assert failed: " ".* Attempting to acquire lock mutex_rankB/.* out of order with lock mutex_rankA/.* -- possible deadlock" ); ::testing::internal::DeathTest* gtest_dt; if (!::testing:: internal::DeathTest::Create("child_MutexRank_mutex_lock_rank_out_of_orderB_()" , >est_regex, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 88, >est_dt)) { goto gtest_label_88; } if (gtest_dt != __null) { ::testing::internal::scoped_ptr< ::testing::internal ::DeathTest> gtest_dt_ptr(gtest_dt); switch (gtest_dt-> AssumeRole()) { case ::testing::internal::DeathTest::OVERSEE_TEST : if (!gtest_dt->Passed(::testing::ExitedWithCode(1)(gtest_dt ->Wait()))) { goto gtest_label_88; } break; case ::testing ::internal::DeathTest::EXECUTE_TEST: { ::testing::internal::DeathTest ::ReturnSentinel gtest_sentinel(gtest_dt); if (::testing::internal ::AlwaysTrue()) { child_MutexRank_mutex_lock_rank_out_of_orderB_ (); }; gtest_dt->Abort(::testing::internal::DeathTest::TEST_DID_NOT_DIE ); break; } default: break; } } } else gtest_label_88: return ::testing::internal::AssertHelper(::testing::TestPartResult:: kFatalFailure, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 88, ::testing::internal::DeathTest::LastMessage()) = ::testing ::Message(); } void test_MutexRank_mutex_lock_rank_out_of_orderB_ () { |
| 89 | JavaThread* THREAD__the_thread__ = JavaThread::current(); |
| 90 | ThreadInVMfromNative invm(THREAD__the_thread__); |
| 91 | |
| 92 | Mutex* mutex_rankA = new Mutex(rankA, "mutex_rankA"); |
| 93 | Mutex* mutex_rankB = new Mutex(rankA, "mutex_rankB"); |
| 94 | |
| 95 | mutex_rankA->lock(); |
| 96 | mutex_rankB->lock(); |
| 97 | mutex_rankB->unlock(); |
| 98 | mutex_rankA->unlock(); |
| 99 | } |
| 100 | |
| 101 | TEST_OTHER_VM(MutexRank, mutex_trylock_rank_out_of_orderA)static void test_MutexRank_mutex_trylock_rank_out_of_orderA_( ); static void child_MutexRank_mutex_trylock_rank_out_of_orderA_ () { ::testing::FLAGS_gtest_throw_on_failure = true; test_MutexRank_mutex_trylock_rank_out_of_orderA_ (); JavaVM* jvm[1]; jsize nVMs = 0; JNI_GetCreatedJavaVMs(& jvm[0], 1, &nVMs); if (nVMs == 1) { int ret = jvm[0]-> DestroyJavaVM(); if (ret != 0) { fprintf(stderr, "Warning: DestroyJavaVM error %d\n" , ret); } } fprintf(stderr, "OKIDOKI"); exit(0); } class MutexRank_mutex_trylock_rank_out_of_orderA_other_vm_Test : public ::testing::Test { public: MutexRank_mutex_trylock_rank_out_of_orderA_other_vm_Test () {} private: virtual void TestBody(); static ::testing::TestInfo * const test_info_ __attribute__ ((unused)); MutexRank_mutex_trylock_rank_out_of_orderA_other_vm_Test (MutexRank_mutex_trylock_rank_out_of_orderA_other_vm_Test const &) = delete; void operator=(MutexRank_mutex_trylock_rank_out_of_orderA_other_vm_Test const &) = delete;};::testing::TestInfo* const MutexRank_mutex_trylock_rank_out_of_orderA_other_vm_Test ::test_info_ = ::testing::internal::MakeAndRegisterTestInfo( "MutexRank", "mutex_trylock_rank_out_of_orderA_other_vm", __null , __null, ::testing::internal::CodeLocation("/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 101), (::testing::internal::GetTestTypeId()), ::testing::Test ::SetUpTestCase, ::testing::Test::TearDownTestCase, new ::testing ::internal::TestFactoryImpl< MutexRank_mutex_trylock_rank_out_of_orderA_other_vm_Test >);void MutexRank_mutex_trylock_rank_out_of_orderA_other_vm_Test ::TestBody() { switch (0) case 0: default: if (::testing::internal ::AlwaysTrue()) { const ::testing::internal::RE& gtest_regex = (".*OKIDOKI.*"); ::testing::internal::DeathTest* gtest_dt; if (!::testing::internal::DeathTest::Create("child_MutexRank_mutex_trylock_rank_out_of_orderA_()" , >est_regex, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 101, >est_dt)) { goto gtest_label_101; } if (gtest_dt != __null) { ::testing::internal::scoped_ptr< ::testing:: internal::DeathTest> gtest_dt_ptr(gtest_dt); switch (gtest_dt ->AssumeRole()) { case ::testing::internal::DeathTest::OVERSEE_TEST : if (!gtest_dt->Passed(::testing::ExitedWithCode(0)(gtest_dt ->Wait()))) { goto gtest_label_101; } break; case ::testing ::internal::DeathTest::EXECUTE_TEST: { ::testing::internal::DeathTest ::ReturnSentinel gtest_sentinel(gtest_dt); if (::testing::internal ::AlwaysTrue()) { child_MutexRank_mutex_trylock_rank_out_of_orderA_ (); }; gtest_dt->Abort(::testing::internal::DeathTest::TEST_DID_NOT_DIE ); break; } default: break; } } } else gtest_label_101: return ::testing::internal::AssertHelper(::testing::TestPartResult:: kFatalFailure, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 101, ::testing::internal::DeathTest::LastMessage()) = ::testing ::Message(); } void test_MutexRank_mutex_trylock_rank_out_of_orderA_ () { |
| 102 | JavaThread* THREAD__the_thread__ = JavaThread::current(); |
| 103 | ThreadInVMfromNative invm(THREAD__the_thread__); |
| 104 | |
| 105 | Mutex* mutex_rankA = new Mutex(rankA, "mutex_rankA"); |
| 106 | Mutex* mutex_rankA_plus_one = new Mutex(rankAplusOne, "mutex_rankA_plus_one"); |
| 107 | Mutex* mutex_rankA_plus_two = new Mutex(rankAplusTwo, "mutex_rankA_plus_two"); |
| 108 | |
| 109 | mutex_rankA_plus_one->lock(); |
| 110 | mutex_rankA_plus_two->try_lock_without_rank_check(); |
| 111 | mutex_rankA->lock(); |
| 112 | mutex_rankA->unlock(); |
| 113 | mutex_rankA_plus_two->unlock(); |
| 114 | mutex_rankA_plus_one->unlock(); |
| 115 | } |
| 116 | |
| 117 | TEST_VM_ASSERT_MSG(MutexRank, mutex_trylock_rank_out_of_orderB,static void test_MutexRank_mutex_trylock_rank_out_of_orderB_( ); static void child_MutexRank_mutex_trylock_rank_out_of_orderB_ () { ::testing::FLAGS_gtest_throw_on_failure = true; test_MutexRank_mutex_trylock_rank_out_of_orderB_ (); exit(0); } class MutexRank_mutex_trylock_rank_out_of_orderB_vm_assert_Test : public ::testing::Test { public: MutexRank_mutex_trylock_rank_out_of_orderB_vm_assert_Test () {} private: virtual void TestBody(); static ::testing::TestInfo * const test_info_ __attribute__ ((unused)); MutexRank_mutex_trylock_rank_out_of_orderB_vm_assert_Test (MutexRank_mutex_trylock_rank_out_of_orderB_vm_assert_Test const &) = delete; void operator=(MutexRank_mutex_trylock_rank_out_of_orderB_vm_assert_Test const &) = delete;};::testing::TestInfo* const MutexRank_mutex_trylock_rank_out_of_orderB_vm_assert_Test ::test_info_ = ::testing::internal::MakeAndRegisterTestInfo( "MutexRank", "mutex_trylock_rank_out_of_orderB_vm_assert", __null , __null, ::testing::internal::CodeLocation("/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 118), (::testing::internal::GetTestTypeId()), ::testing::Test ::SetUpTestCase, ::testing::Test::TearDownTestCase, new ::testing ::internal::TestFactoryImpl< MutexRank_mutex_trylock_rank_out_of_orderB_vm_assert_Test >);void MutexRank_mutex_trylock_rank_out_of_orderB_vm_assert_Test ::TestBody() { switch (0) case 0: default: if (::testing::internal ::AlwaysTrue()) { const ::testing::internal::RE& gtest_regex = ("assert failed: " ".* Attempting to acquire lock mutex_rankA_plus_one/.* out of order with lock mutex_rankA/.* -- possible deadlock" ); ::testing::internal::DeathTest* gtest_dt; if (!::testing:: internal::DeathTest::Create("child_MutexRank_mutex_trylock_rank_out_of_orderB_()" , >est_regex, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 118, >est_dt)) { goto gtest_label_118; } if (gtest_dt != __null) { ::testing::internal::scoped_ptr< ::testing:: internal::DeathTest> gtest_dt_ptr(gtest_dt); switch (gtest_dt ->AssumeRole()) { case ::testing::internal::DeathTest::OVERSEE_TEST : if (!gtest_dt->Passed(::testing::ExitedWithCode(1)(gtest_dt ->Wait()))) { goto gtest_label_118; } break; case ::testing ::internal::DeathTest::EXECUTE_TEST: { ::testing::internal::DeathTest ::ReturnSentinel gtest_sentinel(gtest_dt); if (::testing::internal ::AlwaysTrue()) { child_MutexRank_mutex_trylock_rank_out_of_orderB_ (); }; gtest_dt->Abort(::testing::internal::DeathTest::TEST_DID_NOT_DIE ); break; } default: break; } } } else gtest_label_118: return ::testing::internal::AssertHelper(::testing::TestPartResult:: kFatalFailure, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 118, ::testing::internal::DeathTest::LastMessage()) = ::testing ::Message(); } void test_MutexRank_mutex_trylock_rank_out_of_orderB_ () |
| 118 | ".* Attempting to acquire lock mutex_rankA_plus_one/.* out of order with lock mutex_rankA/.* -- possible deadlock")static void test_MutexRank_mutex_trylock_rank_out_of_orderB_( ); static void child_MutexRank_mutex_trylock_rank_out_of_orderB_ () { ::testing::FLAGS_gtest_throw_on_failure = true; test_MutexRank_mutex_trylock_rank_out_of_orderB_ (); exit(0); } class MutexRank_mutex_trylock_rank_out_of_orderB_vm_assert_Test : public ::testing::Test { public: MutexRank_mutex_trylock_rank_out_of_orderB_vm_assert_Test () {} private: virtual void TestBody(); static ::testing::TestInfo * const test_info_ __attribute__ ((unused)); MutexRank_mutex_trylock_rank_out_of_orderB_vm_assert_Test (MutexRank_mutex_trylock_rank_out_of_orderB_vm_assert_Test const &) = delete; void operator=(MutexRank_mutex_trylock_rank_out_of_orderB_vm_assert_Test const &) = delete;};::testing::TestInfo* const MutexRank_mutex_trylock_rank_out_of_orderB_vm_assert_Test ::test_info_ = ::testing::internal::MakeAndRegisterTestInfo( "MutexRank", "mutex_trylock_rank_out_of_orderB_vm_assert", __null , __null, ::testing::internal::CodeLocation("/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 118), (::testing::internal::GetTestTypeId()), ::testing::Test ::SetUpTestCase, ::testing::Test::TearDownTestCase, new ::testing ::internal::TestFactoryImpl< MutexRank_mutex_trylock_rank_out_of_orderB_vm_assert_Test >);void MutexRank_mutex_trylock_rank_out_of_orderB_vm_assert_Test ::TestBody() { switch (0) case 0: default: if (::testing::internal ::AlwaysTrue()) { const ::testing::internal::RE& gtest_regex = ("assert failed: " ".* Attempting to acquire lock mutex_rankA_plus_one/.* out of order with lock mutex_rankA/.* -- possible deadlock" ); ::testing::internal::DeathTest* gtest_dt; if (!::testing:: internal::DeathTest::Create("child_MutexRank_mutex_trylock_rank_out_of_orderB_()" , >est_regex, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 118, >est_dt)) { goto gtest_label_118; } if (gtest_dt != __null) { ::testing::internal::scoped_ptr< ::testing:: internal::DeathTest> gtest_dt_ptr(gtest_dt); switch (gtest_dt ->AssumeRole()) { case ::testing::internal::DeathTest::OVERSEE_TEST : if (!gtest_dt->Passed(::testing::ExitedWithCode(1)(gtest_dt ->Wait()))) { goto gtest_label_118; } break; case ::testing ::internal::DeathTest::EXECUTE_TEST: { ::testing::internal::DeathTest ::ReturnSentinel gtest_sentinel(gtest_dt); if (::testing::internal ::AlwaysTrue()) { child_MutexRank_mutex_trylock_rank_out_of_orderB_ (); }; gtest_dt->Abort(::testing::internal::DeathTest::TEST_DID_NOT_DIE ); break; } default: break; } } } else gtest_label_118: return ::testing::internal::AssertHelper(::testing::TestPartResult:: kFatalFailure, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 118, ::testing::internal::DeathTest::LastMessage()) = ::testing ::Message(); } void test_MutexRank_mutex_trylock_rank_out_of_orderB_ () { |
| 119 | JavaThread* THREAD__the_thread__ = JavaThread::current(); |
| 120 | ThreadInVMfromNative invm(THREAD__the_thread__); |
| 121 | |
| 122 | Mutex* mutex_rankA = new Mutex(rankA, "mutex_rankA"); |
| 123 | Mutex* mutex_rankA_plus_one = new Mutex(rankAplusOne, "mutex_rankA_plus_one"); |
| 124 | |
| 125 | mutex_rankA->lock(); |
| 126 | mutex_rankA_plus_one->try_lock_without_rank_check(); |
| 127 | mutex_rankA_plus_one->unlock(); |
| 128 | mutex_rankA_plus_one->try_lock(); |
| 129 | mutex_rankA_plus_one->unlock(); |
| 130 | mutex_rankA->unlock(); |
| 131 | } |
| 132 | |
| 133 | TEST_VM_ASSERT_MSG(MutexRank, mutex_lock_event_nosafepoint,static void test_MutexRank_mutex_lock_event_nosafepoint_(); static void child_MutexRank_mutex_lock_event_nosafepoint_() { ::testing ::FLAGS_gtest_throw_on_failure = true; test_MutexRank_mutex_lock_event_nosafepoint_ (); exit(0); } class MutexRank_mutex_lock_event_nosafepoint_vm_assert_Test : public ::testing::Test { public: MutexRank_mutex_lock_event_nosafepoint_vm_assert_Test () {} private: virtual void TestBody(); static ::testing::TestInfo * const test_info_ __attribute__ ((unused)); MutexRank_mutex_lock_event_nosafepoint_vm_assert_Test (MutexRank_mutex_lock_event_nosafepoint_vm_assert_Test const & ) = delete; void operator=(MutexRank_mutex_lock_event_nosafepoint_vm_assert_Test const &) = delete;};::testing::TestInfo* const MutexRank_mutex_lock_event_nosafepoint_vm_assert_Test ::test_info_ = ::testing::internal::MakeAndRegisterTestInfo( "MutexRank", "mutex_lock_event_nosafepoint_vm_assert", __null , __null, ::testing::internal::CodeLocation("/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 135), (::testing::internal::GetTestTypeId()), ::testing::Test ::SetUpTestCase, ::testing::Test::TearDownTestCase, new ::testing ::internal::TestFactoryImpl< MutexRank_mutex_lock_event_nosafepoint_vm_assert_Test >);void MutexRank_mutex_lock_event_nosafepoint_vm_assert_Test ::TestBody() { switch (0) case 0: default: if (::testing::internal ::AlwaysTrue()) { const ::testing::internal::RE& gtest_regex = ("assert failed: " ".* Attempting to acquire lock mutex_rank_nosafepoint/nosafepoint out of order with lock mutex_rank_event/event " "-- possible deadlock"); ::testing::internal::DeathTest* gtest_dt ; if (!::testing::internal::DeathTest::Create("child_MutexRank_mutex_lock_event_nosafepoint_()" , >est_regex, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 135, >est_dt)) { goto gtest_label_135; } if (gtest_dt != __null) { ::testing::internal::scoped_ptr< ::testing:: internal::DeathTest> gtest_dt_ptr(gtest_dt); switch (gtest_dt ->AssumeRole()) { case ::testing::internal::DeathTest::OVERSEE_TEST : if (!gtest_dt->Passed(::testing::ExitedWithCode(1)(gtest_dt ->Wait()))) { goto gtest_label_135; } break; case ::testing ::internal::DeathTest::EXECUTE_TEST: { ::testing::internal::DeathTest ::ReturnSentinel gtest_sentinel(gtest_dt); if (::testing::internal ::AlwaysTrue()) { child_MutexRank_mutex_lock_event_nosafepoint_ (); }; gtest_dt->Abort(::testing::internal::DeathTest::TEST_DID_NOT_DIE ); break; } default: break; } } } else gtest_label_135: return ::testing::internal::AssertHelper(::testing::TestPartResult:: kFatalFailure, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 135, ::testing::internal::DeathTest::LastMessage()) = ::testing ::Message(); } void test_MutexRank_mutex_lock_event_nosafepoint_ () |
| 134 | ".* Attempting to acquire lock mutex_rank_nosafepoint/nosafepoint out of order with lock mutex_rank_event/event "static void test_MutexRank_mutex_lock_event_nosafepoint_(); static void child_MutexRank_mutex_lock_event_nosafepoint_() { ::testing ::FLAGS_gtest_throw_on_failure = true; test_MutexRank_mutex_lock_event_nosafepoint_ (); exit(0); } class MutexRank_mutex_lock_event_nosafepoint_vm_assert_Test : public ::testing::Test { public: MutexRank_mutex_lock_event_nosafepoint_vm_assert_Test () {} private: virtual void TestBody(); static ::testing::TestInfo * const test_info_ __attribute__ ((unused)); MutexRank_mutex_lock_event_nosafepoint_vm_assert_Test (MutexRank_mutex_lock_event_nosafepoint_vm_assert_Test const & ) = delete; void operator=(MutexRank_mutex_lock_event_nosafepoint_vm_assert_Test const &) = delete;};::testing::TestInfo* const MutexRank_mutex_lock_event_nosafepoint_vm_assert_Test ::test_info_ = ::testing::internal::MakeAndRegisterTestInfo( "MutexRank", "mutex_lock_event_nosafepoint_vm_assert", __null , __null, ::testing::internal::CodeLocation("/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 135), (::testing::internal::GetTestTypeId()), ::testing::Test ::SetUpTestCase, ::testing::Test::TearDownTestCase, new ::testing ::internal::TestFactoryImpl< MutexRank_mutex_lock_event_nosafepoint_vm_assert_Test >);void MutexRank_mutex_lock_event_nosafepoint_vm_assert_Test ::TestBody() { switch (0) case 0: default: if (::testing::internal ::AlwaysTrue()) { const ::testing::internal::RE& gtest_regex = ("assert failed: " ".* Attempting to acquire lock mutex_rank_nosafepoint/nosafepoint out of order with lock mutex_rank_event/event " "-- possible deadlock"); ::testing::internal::DeathTest* gtest_dt ; if (!::testing::internal::DeathTest::Create("child_MutexRank_mutex_lock_event_nosafepoint_()" , >est_regex, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 135, >est_dt)) { goto gtest_label_135; } if (gtest_dt != __null) { ::testing::internal::scoped_ptr< ::testing:: internal::DeathTest> gtest_dt_ptr(gtest_dt); switch (gtest_dt ->AssumeRole()) { case ::testing::internal::DeathTest::OVERSEE_TEST : if (!gtest_dt->Passed(::testing::ExitedWithCode(1)(gtest_dt ->Wait()))) { goto gtest_label_135; } break; case ::testing ::internal::DeathTest::EXECUTE_TEST: { ::testing::internal::DeathTest ::ReturnSentinel gtest_sentinel(gtest_dt); if (::testing::internal ::AlwaysTrue()) { child_MutexRank_mutex_lock_event_nosafepoint_ (); }; gtest_dt->Abort(::testing::internal::DeathTest::TEST_DID_NOT_DIE ); break; } default: break; } } } else gtest_label_135: return ::testing::internal::AssertHelper(::testing::TestPartResult:: kFatalFailure, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 135, ::testing::internal::DeathTest::LastMessage()) = ::testing ::Message(); } void test_MutexRank_mutex_lock_event_nosafepoint_ () |
| 135 | "-- possible deadlock")static void test_MutexRank_mutex_lock_event_nosafepoint_(); static void child_MutexRank_mutex_lock_event_nosafepoint_() { ::testing ::FLAGS_gtest_throw_on_failure = true; test_MutexRank_mutex_lock_event_nosafepoint_ (); exit(0); } class MutexRank_mutex_lock_event_nosafepoint_vm_assert_Test : public ::testing::Test { public: MutexRank_mutex_lock_event_nosafepoint_vm_assert_Test () {} private: virtual void TestBody(); static ::testing::TestInfo * const test_info_ __attribute__ ((unused)); MutexRank_mutex_lock_event_nosafepoint_vm_assert_Test (MutexRank_mutex_lock_event_nosafepoint_vm_assert_Test const & ) = delete; void operator=(MutexRank_mutex_lock_event_nosafepoint_vm_assert_Test const &) = delete;};::testing::TestInfo* const MutexRank_mutex_lock_event_nosafepoint_vm_assert_Test ::test_info_ = ::testing::internal::MakeAndRegisterTestInfo( "MutexRank", "mutex_lock_event_nosafepoint_vm_assert", __null , __null, ::testing::internal::CodeLocation("/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 135), (::testing::internal::GetTestTypeId()), ::testing::Test ::SetUpTestCase, ::testing::Test::TearDownTestCase, new ::testing ::internal::TestFactoryImpl< MutexRank_mutex_lock_event_nosafepoint_vm_assert_Test >);void MutexRank_mutex_lock_event_nosafepoint_vm_assert_Test ::TestBody() { switch (0) case 0: default: if (::testing::internal ::AlwaysTrue()) { const ::testing::internal::RE& gtest_regex = ("assert failed: " ".* Attempting to acquire lock mutex_rank_nosafepoint/nosafepoint out of order with lock mutex_rank_event/event " "-- possible deadlock"); ::testing::internal::DeathTest* gtest_dt ; if (!::testing::internal::DeathTest::Create("child_MutexRank_mutex_lock_event_nosafepoint_()" , >est_regex, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 135, >est_dt)) { goto gtest_label_135; } if (gtest_dt != __null) { ::testing::internal::scoped_ptr< ::testing:: internal::DeathTest> gtest_dt_ptr(gtest_dt); switch (gtest_dt ->AssumeRole()) { case ::testing::internal::DeathTest::OVERSEE_TEST : if (!gtest_dt->Passed(::testing::ExitedWithCode(1)(gtest_dt ->Wait()))) { goto gtest_label_135; } break; case ::testing ::internal::DeathTest::EXECUTE_TEST: { ::testing::internal::DeathTest ::ReturnSentinel gtest_sentinel(gtest_dt); if (::testing::internal ::AlwaysTrue()) { child_MutexRank_mutex_lock_event_nosafepoint_ (); }; gtest_dt->Abort(::testing::internal::DeathTest::TEST_DID_NOT_DIE ); break; } default: break; } } } else gtest_label_135: return ::testing::internal::AssertHelper(::testing::TestPartResult:: kFatalFailure, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 135, ::testing::internal::DeathTest::LastMessage()) = ::testing ::Message(); } void test_MutexRank_mutex_lock_event_nosafepoint_ () { |
| 136 | JavaThread* THREAD__the_thread__ = JavaThread::current(); |
| 137 | ThreadInVMfromNative invm(THREAD__the_thread__); |
| 138 | |
| 139 | Mutex* mutex_rank_event = new Mutex(Mutex::event, "mutex_rank_event"); |
| 140 | Mutex* mutex_rank_safepoint = new Mutex(Mutex::nosafepoint, "mutex_rank_nosafepoint"); |
| 141 | |
| 142 | mutex_rank_event->lock_without_safepoint_check(); |
| 143 | mutex_rank_safepoint->lock_without_safepoint_check(); |
| 144 | mutex_rank_safepoint->unlock(); |
| 145 | mutex_rank_event->unlock(); |
| 146 | } |
| 147 | |
| 148 | TEST_VM_ASSERT_MSG(MutexRank, mutex_lock_tty_nosafepoint,static void test_MutexRank_mutex_lock_tty_nosafepoint_(); static void child_MutexRank_mutex_lock_tty_nosafepoint_() { ::testing ::FLAGS_gtest_throw_on_failure = true; test_MutexRank_mutex_lock_tty_nosafepoint_ (); exit(0); } class MutexRank_mutex_lock_tty_nosafepoint_vm_assert_Test : public ::testing::Test { public: MutexRank_mutex_lock_tty_nosafepoint_vm_assert_Test () {} private: virtual void TestBody(); static ::testing::TestInfo * const test_info_ __attribute__ ((unused)); MutexRank_mutex_lock_tty_nosafepoint_vm_assert_Test (MutexRank_mutex_lock_tty_nosafepoint_vm_assert_Test const & ) = delete; void operator=(MutexRank_mutex_lock_tty_nosafepoint_vm_assert_Test const &) = delete;};::testing::TestInfo* const MutexRank_mutex_lock_tty_nosafepoint_vm_assert_Test ::test_info_ = ::testing::internal::MakeAndRegisterTestInfo( "MutexRank", "mutex_lock_tty_nosafepoint_vm_assert", __null, __null, ::testing::internal::CodeLocation("/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 150), (::testing::internal::GetTestTypeId()), ::testing::Test ::SetUpTestCase, ::testing::Test::TearDownTestCase, new ::testing ::internal::TestFactoryImpl< MutexRank_mutex_lock_tty_nosafepoint_vm_assert_Test >);void MutexRank_mutex_lock_tty_nosafepoint_vm_assert_Test ::TestBody() { switch (0) case 0: default: if (::testing::internal ::AlwaysTrue()) { const ::testing::internal::RE& gtest_regex = ("assert failed: " ".* Attempting to acquire lock mutex_rank_nosafepoint/nosafepoint out of order with lock mutex_rank_tty/tty " "-- possible deadlock"); ::testing::internal::DeathTest* gtest_dt ; if (!::testing::internal::DeathTest::Create("child_MutexRank_mutex_lock_tty_nosafepoint_()" , >est_regex, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 150, >est_dt)) { goto gtest_label_150; } if (gtest_dt != __null) { ::testing::internal::scoped_ptr< ::testing:: internal::DeathTest> gtest_dt_ptr(gtest_dt); switch (gtest_dt ->AssumeRole()) { case ::testing::internal::DeathTest::OVERSEE_TEST : if (!gtest_dt->Passed(::testing::ExitedWithCode(1)(gtest_dt ->Wait()))) { goto gtest_label_150; } break; case ::testing ::internal::DeathTest::EXECUTE_TEST: { ::testing::internal::DeathTest ::ReturnSentinel gtest_sentinel(gtest_dt); if (::testing::internal ::AlwaysTrue()) { child_MutexRank_mutex_lock_tty_nosafepoint_ (); }; gtest_dt->Abort(::testing::internal::DeathTest::TEST_DID_NOT_DIE ); break; } default: break; } } } else gtest_label_150: return ::testing::internal::AssertHelper(::testing::TestPartResult:: kFatalFailure, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 150, ::testing::internal::DeathTest::LastMessage()) = ::testing ::Message(); } void test_MutexRank_mutex_lock_tty_nosafepoint_ () |
| 149 | ".* Attempting to acquire lock mutex_rank_nosafepoint/nosafepoint out of order with lock mutex_rank_tty/tty "static void test_MutexRank_mutex_lock_tty_nosafepoint_(); static void child_MutexRank_mutex_lock_tty_nosafepoint_() { ::testing ::FLAGS_gtest_throw_on_failure = true; test_MutexRank_mutex_lock_tty_nosafepoint_ (); exit(0); } class MutexRank_mutex_lock_tty_nosafepoint_vm_assert_Test : public ::testing::Test { public: MutexRank_mutex_lock_tty_nosafepoint_vm_assert_Test () {} private: virtual void TestBody(); static ::testing::TestInfo * const test_info_ __attribute__ ((unused)); MutexRank_mutex_lock_tty_nosafepoint_vm_assert_Test (MutexRank_mutex_lock_tty_nosafepoint_vm_assert_Test const & ) = delete; void operator=(MutexRank_mutex_lock_tty_nosafepoint_vm_assert_Test const &) = delete;};::testing::TestInfo* const MutexRank_mutex_lock_tty_nosafepoint_vm_assert_Test ::test_info_ = ::testing::internal::MakeAndRegisterTestInfo( "MutexRank", "mutex_lock_tty_nosafepoint_vm_assert", __null, __null, ::testing::internal::CodeLocation("/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 150), (::testing::internal::GetTestTypeId()), ::testing::Test ::SetUpTestCase, ::testing::Test::TearDownTestCase, new ::testing ::internal::TestFactoryImpl< MutexRank_mutex_lock_tty_nosafepoint_vm_assert_Test >);void MutexRank_mutex_lock_tty_nosafepoint_vm_assert_Test ::TestBody() { switch (0) case 0: default: if (::testing::internal ::AlwaysTrue()) { const ::testing::internal::RE& gtest_regex = ("assert failed: " ".* Attempting to acquire lock mutex_rank_nosafepoint/nosafepoint out of order with lock mutex_rank_tty/tty " "-- possible deadlock"); ::testing::internal::DeathTest* gtest_dt ; if (!::testing::internal::DeathTest::Create("child_MutexRank_mutex_lock_tty_nosafepoint_()" , >est_regex, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 150, >est_dt)) { goto gtest_label_150; } if (gtest_dt != __null) { ::testing::internal::scoped_ptr< ::testing:: internal::DeathTest> gtest_dt_ptr(gtest_dt); switch (gtest_dt ->AssumeRole()) { case ::testing::internal::DeathTest::OVERSEE_TEST : if (!gtest_dt->Passed(::testing::ExitedWithCode(1)(gtest_dt ->Wait()))) { goto gtest_label_150; } break; case ::testing ::internal::DeathTest::EXECUTE_TEST: { ::testing::internal::DeathTest ::ReturnSentinel gtest_sentinel(gtest_dt); if (::testing::internal ::AlwaysTrue()) { child_MutexRank_mutex_lock_tty_nosafepoint_ (); }; gtest_dt->Abort(::testing::internal::DeathTest::TEST_DID_NOT_DIE ); break; } default: break; } } } else gtest_label_150: return ::testing::internal::AssertHelper(::testing::TestPartResult:: kFatalFailure, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 150, ::testing::internal::DeathTest::LastMessage()) = ::testing ::Message(); } void test_MutexRank_mutex_lock_tty_nosafepoint_ () |
| 150 | "-- possible deadlock")static void test_MutexRank_mutex_lock_tty_nosafepoint_(); static void child_MutexRank_mutex_lock_tty_nosafepoint_() { ::testing ::FLAGS_gtest_throw_on_failure = true; test_MutexRank_mutex_lock_tty_nosafepoint_ (); exit(0); } class MutexRank_mutex_lock_tty_nosafepoint_vm_assert_Test : public ::testing::Test { public: MutexRank_mutex_lock_tty_nosafepoint_vm_assert_Test () {} private: virtual void TestBody(); static ::testing::TestInfo * const test_info_ __attribute__ ((unused)); MutexRank_mutex_lock_tty_nosafepoint_vm_assert_Test (MutexRank_mutex_lock_tty_nosafepoint_vm_assert_Test const & ) = delete; void operator=(MutexRank_mutex_lock_tty_nosafepoint_vm_assert_Test const &) = delete;};::testing::TestInfo* const MutexRank_mutex_lock_tty_nosafepoint_vm_assert_Test ::test_info_ = ::testing::internal::MakeAndRegisterTestInfo( "MutexRank", "mutex_lock_tty_nosafepoint_vm_assert", __null, __null, ::testing::internal::CodeLocation("/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 150), (::testing::internal::GetTestTypeId()), ::testing::Test ::SetUpTestCase, ::testing::Test::TearDownTestCase, new ::testing ::internal::TestFactoryImpl< MutexRank_mutex_lock_tty_nosafepoint_vm_assert_Test >);void MutexRank_mutex_lock_tty_nosafepoint_vm_assert_Test ::TestBody() { switch (0) case 0: default: if (::testing::internal ::AlwaysTrue()) { const ::testing::internal::RE& gtest_regex = ("assert failed: " ".* Attempting to acquire lock mutex_rank_nosafepoint/nosafepoint out of order with lock mutex_rank_tty/tty " "-- possible deadlock"); ::testing::internal::DeathTest* gtest_dt ; if (!::testing::internal::DeathTest::Create("child_MutexRank_mutex_lock_tty_nosafepoint_()" , >est_regex, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 150, >est_dt)) { goto gtest_label_150; } if (gtest_dt != __null) { ::testing::internal::scoped_ptr< ::testing:: internal::DeathTest> gtest_dt_ptr(gtest_dt); switch (gtest_dt ->AssumeRole()) { case ::testing::internal::DeathTest::OVERSEE_TEST : if (!gtest_dt->Passed(::testing::ExitedWithCode(1)(gtest_dt ->Wait()))) { goto gtest_label_150; } break; case ::testing ::internal::DeathTest::EXECUTE_TEST: { ::testing::internal::DeathTest ::ReturnSentinel gtest_sentinel(gtest_dt); if (::testing::internal ::AlwaysTrue()) { child_MutexRank_mutex_lock_tty_nosafepoint_ (); }; gtest_dt->Abort(::testing::internal::DeathTest::TEST_DID_NOT_DIE ); break; } default: break; } } } else gtest_label_150: return ::testing::internal::AssertHelper(::testing::TestPartResult:: kFatalFailure, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 150, ::testing::internal::DeathTest::LastMessage()) = ::testing ::Message(); } void test_MutexRank_mutex_lock_tty_nosafepoint_ () { |
| 151 | JavaThread* THREAD__the_thread__ = JavaThread::current(); |
| 152 | ThreadInVMfromNative invm(THREAD__the_thread__); |
| 153 | |
| 154 | Mutex* mutex_rank_tty = new Mutex(Mutex::tty, "mutex_rank_tty"); |
| 155 | Mutex* mutex_rank_nosafepoint = new Mutex(Mutex::nosafepoint, "mutex_rank_nosafepoint"); |
| 156 | |
| 157 | mutex_rank_tty->lock_without_safepoint_check(); |
| 158 | mutex_rank_nosafepoint->lock_without_safepoint_check(); |
| 159 | mutex_rank_nosafepoint->unlock(); |
| 160 | mutex_rank_tty->unlock(); |
| 161 | } |
| 162 | |
| 163 | TEST_OTHER_VM(MutexRank, monitor_wait_rank_in_order)static void test_MutexRank_monitor_wait_rank_in_order_(); static void child_MutexRank_monitor_wait_rank_in_order_() { ::testing ::FLAGS_gtest_throw_on_failure = true; test_MutexRank_monitor_wait_rank_in_order_ (); JavaVM* jvm[1]; jsize nVMs = 0; JNI_GetCreatedJavaVMs(& jvm[0], 1, &nVMs); if (nVMs == 1) { int ret = jvm[0]-> DestroyJavaVM(); if (ret != 0) { fprintf(stderr, "Warning: DestroyJavaVM error %d\n" , ret); } } fprintf(stderr, "OKIDOKI"); exit(0); } class MutexRank_monitor_wait_rank_in_order_other_vm_Test : public ::testing::Test { public: MutexRank_monitor_wait_rank_in_order_other_vm_Test () {} private: virtual void TestBody(); static ::testing::TestInfo * const test_info_ __attribute__ ((unused)); MutexRank_monitor_wait_rank_in_order_other_vm_Test (MutexRank_monitor_wait_rank_in_order_other_vm_Test const & ) = delete; void operator=(MutexRank_monitor_wait_rank_in_order_other_vm_Test const &) = delete;};::testing::TestInfo* const MutexRank_monitor_wait_rank_in_order_other_vm_Test ::test_info_ = ::testing::internal::MakeAndRegisterTestInfo( "MutexRank", "monitor_wait_rank_in_order_other_vm", __null, __null , ::testing::internal::CodeLocation("/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 163), (::testing::internal::GetTestTypeId()), ::testing::Test ::SetUpTestCase, ::testing::Test::TearDownTestCase, new ::testing ::internal::TestFactoryImpl< MutexRank_monitor_wait_rank_in_order_other_vm_Test >);void MutexRank_monitor_wait_rank_in_order_other_vm_Test ::TestBody() { switch (0) case 0: default: if (::testing::internal ::AlwaysTrue()) { const ::testing::internal::RE& gtest_regex = (".*OKIDOKI.*"); ::testing::internal::DeathTest* gtest_dt; if (!::testing::internal::DeathTest::Create("child_MutexRank_monitor_wait_rank_in_order_()" , >est_regex, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 163, >est_dt)) { goto gtest_label_163; } if (gtest_dt != __null) { ::testing::internal::scoped_ptr< ::testing:: internal::DeathTest> gtest_dt_ptr(gtest_dt); switch (gtest_dt ->AssumeRole()) { case ::testing::internal::DeathTest::OVERSEE_TEST : if (!gtest_dt->Passed(::testing::ExitedWithCode(0)(gtest_dt ->Wait()))) { goto gtest_label_163; } break; case ::testing ::internal::DeathTest::EXECUTE_TEST: { ::testing::internal::DeathTest ::ReturnSentinel gtest_sentinel(gtest_dt); if (::testing::internal ::AlwaysTrue()) { child_MutexRank_monitor_wait_rank_in_order_ (); }; gtest_dt->Abort(::testing::internal::DeathTest::TEST_DID_NOT_DIE ); break; } default: break; } } } else gtest_label_163: return ::testing::internal::AssertHelper(::testing::TestPartResult:: kFatalFailure, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 163, ::testing::internal::DeathTest::LastMessage()) = ::testing ::Message(); } void test_MutexRank_monitor_wait_rank_in_order_ () { |
| 164 | JavaThread* THREAD__the_thread__ = JavaThread::current(); |
| 165 | ThreadInVMfromNative invm(THREAD__the_thread__); |
| 166 | |
| 167 | Monitor* monitor_rankA = new Monitor(rankA, "monitor_rankA"); |
| 168 | Monitor* monitor_rankA_plus_one = new Monitor(rankAplusOne, "monitor_rankA_plus_one"); |
| 169 | |
| 170 | monitor_rankA_plus_one->lock(); |
| 171 | monitor_rankA->lock(); |
| 172 | monitor_rankA->wait(1); |
| 173 | monitor_rankA->unlock(); |
| 174 | monitor_rankA_plus_one->unlock(); |
| 175 | } |
| 176 | |
| 177 | TEST_VM_ASSERT_MSG(MutexRank, monitor_wait_rank_out_of_order,static void test_MutexRank_monitor_wait_rank_out_of_order_(); static void child_MutexRank_monitor_wait_rank_out_of_order_( ) { ::testing::FLAGS_gtest_throw_on_failure = true; test_MutexRank_monitor_wait_rank_out_of_order_ (); exit(0); } class MutexRank_monitor_wait_rank_out_of_order_vm_assert_Test : public ::testing::Test { public: MutexRank_monitor_wait_rank_out_of_order_vm_assert_Test () {} private: virtual void TestBody(); static ::testing::TestInfo * const test_info_ __attribute__ ((unused)); MutexRank_monitor_wait_rank_out_of_order_vm_assert_Test (MutexRank_monitor_wait_rank_out_of_order_vm_assert_Test const &) = delete; void operator=(MutexRank_monitor_wait_rank_out_of_order_vm_assert_Test const &) = delete;};::testing::TestInfo* const MutexRank_monitor_wait_rank_out_of_order_vm_assert_Test ::test_info_ = ::testing::internal::MakeAndRegisterTestInfo( "MutexRank", "monitor_wait_rank_out_of_order_vm_assert", __null , __null, ::testing::internal::CodeLocation("/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 179), (::testing::internal::GetTestTypeId()), ::testing::Test ::SetUpTestCase, ::testing::Test::TearDownTestCase, new ::testing ::internal::TestFactoryImpl< MutexRank_monitor_wait_rank_out_of_order_vm_assert_Test >);void MutexRank_monitor_wait_rank_out_of_order_vm_assert_Test ::TestBody() { switch (0) case 0: default: if (::testing::internal ::AlwaysTrue()) { const ::testing::internal::RE& gtest_regex = ("assert failed: " ".* Attempting to wait on monitor monitor_rankA_plus_one/.* while holding lock monitor_rankA/.* " "-- possible deadlock. Should wait on the least ranked monitor from all owned locks." ); ::testing::internal::DeathTest* gtest_dt; if (!::testing:: internal::DeathTest::Create("child_MutexRank_monitor_wait_rank_out_of_order_()" , >est_regex, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 179, >est_dt)) { goto gtest_label_179; } if (gtest_dt != __null) { ::testing::internal::scoped_ptr< ::testing:: internal::DeathTest> gtest_dt_ptr(gtest_dt); switch (gtest_dt ->AssumeRole()) { case ::testing::internal::DeathTest::OVERSEE_TEST : if (!gtest_dt->Passed(::testing::ExitedWithCode(1)(gtest_dt ->Wait()))) { goto gtest_label_179; } break; case ::testing ::internal::DeathTest::EXECUTE_TEST: { ::testing::internal::DeathTest ::ReturnSentinel gtest_sentinel(gtest_dt); if (::testing::internal ::AlwaysTrue()) { child_MutexRank_monitor_wait_rank_out_of_order_ (); }; gtest_dt->Abort(::testing::internal::DeathTest::TEST_DID_NOT_DIE ); break; } default: break; } } } else gtest_label_179: return ::testing::internal::AssertHelper(::testing::TestPartResult:: kFatalFailure, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 179, ::testing::internal::DeathTest::LastMessage()) = ::testing ::Message(); } void test_MutexRank_monitor_wait_rank_out_of_order_ () |
| 178 | ".* Attempting to wait on monitor monitor_rankA_plus_one/.* while holding lock monitor_rankA/.* "static void test_MutexRank_monitor_wait_rank_out_of_order_(); static void child_MutexRank_monitor_wait_rank_out_of_order_( ) { ::testing::FLAGS_gtest_throw_on_failure = true; test_MutexRank_monitor_wait_rank_out_of_order_ (); exit(0); } class MutexRank_monitor_wait_rank_out_of_order_vm_assert_Test : public ::testing::Test { public: MutexRank_monitor_wait_rank_out_of_order_vm_assert_Test () {} private: virtual void TestBody(); static ::testing::TestInfo * const test_info_ __attribute__ ((unused)); MutexRank_monitor_wait_rank_out_of_order_vm_assert_Test (MutexRank_monitor_wait_rank_out_of_order_vm_assert_Test const &) = delete; void operator=(MutexRank_monitor_wait_rank_out_of_order_vm_assert_Test const &) = delete;};::testing::TestInfo* const MutexRank_monitor_wait_rank_out_of_order_vm_assert_Test ::test_info_ = ::testing::internal::MakeAndRegisterTestInfo( "MutexRank", "monitor_wait_rank_out_of_order_vm_assert", __null , __null, ::testing::internal::CodeLocation("/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 179), (::testing::internal::GetTestTypeId()), ::testing::Test ::SetUpTestCase, ::testing::Test::TearDownTestCase, new ::testing ::internal::TestFactoryImpl< MutexRank_monitor_wait_rank_out_of_order_vm_assert_Test >);void MutexRank_monitor_wait_rank_out_of_order_vm_assert_Test ::TestBody() { switch (0) case 0: default: if (::testing::internal ::AlwaysTrue()) { const ::testing::internal::RE& gtest_regex = ("assert failed: " ".* Attempting to wait on monitor monitor_rankA_plus_one/.* while holding lock monitor_rankA/.* " "-- possible deadlock. Should wait on the least ranked monitor from all owned locks." ); ::testing::internal::DeathTest* gtest_dt; if (!::testing:: internal::DeathTest::Create("child_MutexRank_monitor_wait_rank_out_of_order_()" , >est_regex, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 179, >est_dt)) { goto gtest_label_179; } if (gtest_dt != __null) { ::testing::internal::scoped_ptr< ::testing:: internal::DeathTest> gtest_dt_ptr(gtest_dt); switch (gtest_dt ->AssumeRole()) { case ::testing::internal::DeathTest::OVERSEE_TEST : if (!gtest_dt->Passed(::testing::ExitedWithCode(1)(gtest_dt ->Wait()))) { goto gtest_label_179; } break; case ::testing ::internal::DeathTest::EXECUTE_TEST: { ::testing::internal::DeathTest ::ReturnSentinel gtest_sentinel(gtest_dt); if (::testing::internal ::AlwaysTrue()) { child_MutexRank_monitor_wait_rank_out_of_order_ (); }; gtest_dt->Abort(::testing::internal::DeathTest::TEST_DID_NOT_DIE ); break; } default: break; } } } else gtest_label_179: return ::testing::internal::AssertHelper(::testing::TestPartResult:: kFatalFailure, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 179, ::testing::internal::DeathTest::LastMessage()) = ::testing ::Message(); } void test_MutexRank_monitor_wait_rank_out_of_order_ () |
| 179 | "-- possible deadlock. Should wait on the least ranked monitor from all owned locks.")static void test_MutexRank_monitor_wait_rank_out_of_order_(); static void child_MutexRank_monitor_wait_rank_out_of_order_( ) { ::testing::FLAGS_gtest_throw_on_failure = true; test_MutexRank_monitor_wait_rank_out_of_order_ (); exit(0); } class MutexRank_monitor_wait_rank_out_of_order_vm_assert_Test : public ::testing::Test { public: MutexRank_monitor_wait_rank_out_of_order_vm_assert_Test () {} private: virtual void TestBody(); static ::testing::TestInfo * const test_info_ __attribute__ ((unused)); MutexRank_monitor_wait_rank_out_of_order_vm_assert_Test (MutexRank_monitor_wait_rank_out_of_order_vm_assert_Test const &) = delete; void operator=(MutexRank_monitor_wait_rank_out_of_order_vm_assert_Test const &) = delete;};::testing::TestInfo* const MutexRank_monitor_wait_rank_out_of_order_vm_assert_Test ::test_info_ = ::testing::internal::MakeAndRegisterTestInfo( "MutexRank", "monitor_wait_rank_out_of_order_vm_assert", __null , __null, ::testing::internal::CodeLocation("/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 179), (::testing::internal::GetTestTypeId()), ::testing::Test ::SetUpTestCase, ::testing::Test::TearDownTestCase, new ::testing ::internal::TestFactoryImpl< MutexRank_monitor_wait_rank_out_of_order_vm_assert_Test >);void MutexRank_monitor_wait_rank_out_of_order_vm_assert_Test ::TestBody() { switch (0) case 0: default: if (::testing::internal ::AlwaysTrue()) { const ::testing::internal::RE& gtest_regex = ("assert failed: " ".* Attempting to wait on monitor monitor_rankA_plus_one/.* while holding lock monitor_rankA/.* " "-- possible deadlock. Should wait on the least ranked monitor from all owned locks." ); ::testing::internal::DeathTest* gtest_dt; if (!::testing:: internal::DeathTest::Create("child_MutexRank_monitor_wait_rank_out_of_order_()" , >est_regex, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 179, >est_dt)) { goto gtest_label_179; } if (gtest_dt != __null) { ::testing::internal::scoped_ptr< ::testing:: internal::DeathTest> gtest_dt_ptr(gtest_dt); switch (gtest_dt ->AssumeRole()) { case ::testing::internal::DeathTest::OVERSEE_TEST : if (!gtest_dt->Passed(::testing::ExitedWithCode(1)(gtest_dt ->Wait()))) { goto gtest_label_179; } break; case ::testing ::internal::DeathTest::EXECUTE_TEST: { ::testing::internal::DeathTest ::ReturnSentinel gtest_sentinel(gtest_dt); if (::testing::internal ::AlwaysTrue()) { child_MutexRank_monitor_wait_rank_out_of_order_ (); }; gtest_dt->Abort(::testing::internal::DeathTest::TEST_DID_NOT_DIE ); break; } default: break; } } } else gtest_label_179: return ::testing::internal::AssertHelper(::testing::TestPartResult:: kFatalFailure, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 179, ::testing::internal::DeathTest::LastMessage()) = ::testing ::Message(); } void test_MutexRank_monitor_wait_rank_out_of_order_ () { |
| 180 | JavaThread* THREAD__the_thread__ = JavaThread::current(); |
| 181 | ThreadInVMfromNative invm(THREAD__the_thread__); |
| 182 | |
| 183 | Monitor* monitor_rankA = new Monitor(rankA, "monitor_rankA"); |
| 184 | Monitor* monitor_rankA_plus_one = new Monitor(rankAplusOne, "monitor_rankA_plus_one"); |
| 185 | |
| 186 | monitor_rankA_plus_one->lock(); |
| 187 | monitor_rankA->lock(); |
| 188 | monitor_rankA_plus_one->wait(1); |
| 189 | monitor_rankA_plus_one->unlock(); |
| 190 | monitor_rankA->unlock(); |
| 191 | } |
| 192 | |
| 193 | TEST_VM_ASSERT_MSG(MutexRank, monitor_wait_rank_out_of_order_trylock,static void test_MutexRank_monitor_wait_rank_out_of_order_trylock_ (); static void child_MutexRank_monitor_wait_rank_out_of_order_trylock_ () { ::testing::FLAGS_gtest_throw_on_failure = true; test_MutexRank_monitor_wait_rank_out_of_order_trylock_ (); exit(0); } class MutexRank_monitor_wait_rank_out_of_order_trylock_vm_assert_Test : public ::testing::Test { public: MutexRank_monitor_wait_rank_out_of_order_trylock_vm_assert_Test () {} private: virtual void TestBody(); static ::testing::TestInfo * const test_info_ __attribute__ ((unused)); MutexRank_monitor_wait_rank_out_of_order_trylock_vm_assert_Test (MutexRank_monitor_wait_rank_out_of_order_trylock_vm_assert_Test const &) = delete; void operator=(MutexRank_monitor_wait_rank_out_of_order_trylock_vm_assert_Test const &) = delete;};::testing::TestInfo* const MutexRank_monitor_wait_rank_out_of_order_trylock_vm_assert_Test ::test_info_ = ::testing::internal::MakeAndRegisterTestInfo( "MutexRank", "monitor_wait_rank_out_of_order_trylock_vm_assert" , __null, __null, ::testing::internal::CodeLocation("/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 195), (::testing::internal::GetTestTypeId()), ::testing::Test ::SetUpTestCase, ::testing::Test::TearDownTestCase, new ::testing ::internal::TestFactoryImpl< MutexRank_monitor_wait_rank_out_of_order_trylock_vm_assert_Test >);void MutexRank_monitor_wait_rank_out_of_order_trylock_vm_assert_Test ::TestBody() { switch (0) case 0: default: if (::testing::internal ::AlwaysTrue()) { const ::testing::internal::RE& gtest_regex = ("assert failed: " ".* Attempting to wait on monitor monitor_rankA_plus_one/.* while holding lock monitor_rankA/.* " "-- possible deadlock. Should wait on the least ranked monitor from all owned locks." ); ::testing::internal::DeathTest* gtest_dt; if (!::testing:: internal::DeathTest::Create("child_MutexRank_monitor_wait_rank_out_of_order_trylock_()" , >est_regex, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 195, >est_dt)) { goto gtest_label_195; } if (gtest_dt != __null) { ::testing::internal::scoped_ptr< ::testing:: internal::DeathTest> gtest_dt_ptr(gtest_dt); switch (gtest_dt ->AssumeRole()) { case ::testing::internal::DeathTest::OVERSEE_TEST : if (!gtest_dt->Passed(::testing::ExitedWithCode(1)(gtest_dt ->Wait()))) { goto gtest_label_195; } break; case ::testing ::internal::DeathTest::EXECUTE_TEST: { ::testing::internal::DeathTest ::ReturnSentinel gtest_sentinel(gtest_dt); if (::testing::internal ::AlwaysTrue()) { child_MutexRank_monitor_wait_rank_out_of_order_trylock_ (); }; gtest_dt->Abort(::testing::internal::DeathTest::TEST_DID_NOT_DIE ); break; } default: break; } } } else gtest_label_195: return ::testing::internal::AssertHelper(::testing::TestPartResult:: kFatalFailure, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 195, ::testing::internal::DeathTest::LastMessage()) = ::testing ::Message(); } void test_MutexRank_monitor_wait_rank_out_of_order_trylock_ () |
| 194 | ".* Attempting to wait on monitor monitor_rankA_plus_one/.* while holding lock monitor_rankA/.* "static void test_MutexRank_monitor_wait_rank_out_of_order_trylock_ (); static void child_MutexRank_monitor_wait_rank_out_of_order_trylock_ () { ::testing::FLAGS_gtest_throw_on_failure = true; test_MutexRank_monitor_wait_rank_out_of_order_trylock_ (); exit(0); } class MutexRank_monitor_wait_rank_out_of_order_trylock_vm_assert_Test : public ::testing::Test { public: MutexRank_monitor_wait_rank_out_of_order_trylock_vm_assert_Test () {} private: virtual void TestBody(); static ::testing::TestInfo * const test_info_ __attribute__ ((unused)); MutexRank_monitor_wait_rank_out_of_order_trylock_vm_assert_Test (MutexRank_monitor_wait_rank_out_of_order_trylock_vm_assert_Test const &) = delete; void operator=(MutexRank_monitor_wait_rank_out_of_order_trylock_vm_assert_Test const &) = delete;};::testing::TestInfo* const MutexRank_monitor_wait_rank_out_of_order_trylock_vm_assert_Test ::test_info_ = ::testing::internal::MakeAndRegisterTestInfo( "MutexRank", "monitor_wait_rank_out_of_order_trylock_vm_assert" , __null, __null, ::testing::internal::CodeLocation("/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 195), (::testing::internal::GetTestTypeId()), ::testing::Test ::SetUpTestCase, ::testing::Test::TearDownTestCase, new ::testing ::internal::TestFactoryImpl< MutexRank_monitor_wait_rank_out_of_order_trylock_vm_assert_Test >);void MutexRank_monitor_wait_rank_out_of_order_trylock_vm_assert_Test ::TestBody() { switch (0) case 0: default: if (::testing::internal ::AlwaysTrue()) { const ::testing::internal::RE& gtest_regex = ("assert failed: " ".* Attempting to wait on monitor monitor_rankA_plus_one/.* while holding lock monitor_rankA/.* " "-- possible deadlock. Should wait on the least ranked monitor from all owned locks." ); ::testing::internal::DeathTest* gtest_dt; if (!::testing:: internal::DeathTest::Create("child_MutexRank_monitor_wait_rank_out_of_order_trylock_()" , >est_regex, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 195, >est_dt)) { goto gtest_label_195; } if (gtest_dt != __null) { ::testing::internal::scoped_ptr< ::testing:: internal::DeathTest> gtest_dt_ptr(gtest_dt); switch (gtest_dt ->AssumeRole()) { case ::testing::internal::DeathTest::OVERSEE_TEST : if (!gtest_dt->Passed(::testing::ExitedWithCode(1)(gtest_dt ->Wait()))) { goto gtest_label_195; } break; case ::testing ::internal::DeathTest::EXECUTE_TEST: { ::testing::internal::DeathTest ::ReturnSentinel gtest_sentinel(gtest_dt); if (::testing::internal ::AlwaysTrue()) { child_MutexRank_monitor_wait_rank_out_of_order_trylock_ (); }; gtest_dt->Abort(::testing::internal::DeathTest::TEST_DID_NOT_DIE ); break; } default: break; } } } else gtest_label_195: return ::testing::internal::AssertHelper(::testing::TestPartResult:: kFatalFailure, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 195, ::testing::internal::DeathTest::LastMessage()) = ::testing ::Message(); } void test_MutexRank_monitor_wait_rank_out_of_order_trylock_ () |
| 195 | "-- possible deadlock. Should wait on the least ranked monitor from all owned locks.")static void test_MutexRank_monitor_wait_rank_out_of_order_trylock_ (); static void child_MutexRank_monitor_wait_rank_out_of_order_trylock_ () { ::testing::FLAGS_gtest_throw_on_failure = true; test_MutexRank_monitor_wait_rank_out_of_order_trylock_ (); exit(0); } class MutexRank_monitor_wait_rank_out_of_order_trylock_vm_assert_Test : public ::testing::Test { public: MutexRank_monitor_wait_rank_out_of_order_trylock_vm_assert_Test () {} private: virtual void TestBody(); static ::testing::TestInfo * const test_info_ __attribute__ ((unused)); MutexRank_monitor_wait_rank_out_of_order_trylock_vm_assert_Test (MutexRank_monitor_wait_rank_out_of_order_trylock_vm_assert_Test const &) = delete; void operator=(MutexRank_monitor_wait_rank_out_of_order_trylock_vm_assert_Test const &) = delete;};::testing::TestInfo* const MutexRank_monitor_wait_rank_out_of_order_trylock_vm_assert_Test ::test_info_ = ::testing::internal::MakeAndRegisterTestInfo( "MutexRank", "monitor_wait_rank_out_of_order_trylock_vm_assert" , __null, __null, ::testing::internal::CodeLocation("/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 195), (::testing::internal::GetTestTypeId()), ::testing::Test ::SetUpTestCase, ::testing::Test::TearDownTestCase, new ::testing ::internal::TestFactoryImpl< MutexRank_monitor_wait_rank_out_of_order_trylock_vm_assert_Test >);void MutexRank_monitor_wait_rank_out_of_order_trylock_vm_assert_Test ::TestBody() { switch (0) case 0: default: if (::testing::internal ::AlwaysTrue()) { const ::testing::internal::RE& gtest_regex = ("assert failed: " ".* Attempting to wait on monitor monitor_rankA_plus_one/.* while holding lock monitor_rankA/.* " "-- possible deadlock. Should wait on the least ranked monitor from all owned locks." ); ::testing::internal::DeathTest* gtest_dt; if (!::testing:: internal::DeathTest::Create("child_MutexRank_monitor_wait_rank_out_of_order_trylock_()" , >est_regex, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 195, >est_dt)) { goto gtest_label_195; } if (gtest_dt != __null) { ::testing::internal::scoped_ptr< ::testing:: internal::DeathTest> gtest_dt_ptr(gtest_dt); switch (gtest_dt ->AssumeRole()) { case ::testing::internal::DeathTest::OVERSEE_TEST : if (!gtest_dt->Passed(::testing::ExitedWithCode(1)(gtest_dt ->Wait()))) { goto gtest_label_195; } break; case ::testing ::internal::DeathTest::EXECUTE_TEST: { ::testing::internal::DeathTest ::ReturnSentinel gtest_sentinel(gtest_dt); if (::testing::internal ::AlwaysTrue()) { child_MutexRank_monitor_wait_rank_out_of_order_trylock_ (); }; gtest_dt->Abort(::testing::internal::DeathTest::TEST_DID_NOT_DIE ); break; } default: break; } } } else gtest_label_195: return ::testing::internal::AssertHelper(::testing::TestPartResult:: kFatalFailure, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 195, ::testing::internal::DeathTest::LastMessage()) = ::testing ::Message(); } void test_MutexRank_monitor_wait_rank_out_of_order_trylock_ () { |
| 196 | JavaThread* THREAD__the_thread__ = JavaThread::current(); |
| 197 | ThreadInVMfromNative invm(THREAD__the_thread__); |
| 198 | |
| 199 | Monitor* monitor_rankA = new Monitor(rankA, "monitor_rankA"); |
| 200 | Monitor* monitor_rankA_plus_one = new Monitor(rankAplusOne, "monitor_rankA_plus_one"); |
| 201 | |
| 202 | monitor_rankA->lock(); |
| 203 | monitor_rankA_plus_one->try_lock_without_rank_check(); |
| 204 | monitor_rankA_plus_one->wait(); |
| 205 | monitor_rankA_plus_one->unlock(); |
| 206 | monitor_rankA->unlock(); |
| 207 | } |
| 208 | |
| 209 | TEST_VM_ASSERT_MSG(MutexRank, monitor_wait_rank_nosafepoint,static void test_MutexRank_monitor_wait_rank_nosafepoint_(); static void child_MutexRank_monitor_wait_rank_nosafepoint_() { ::testing ::FLAGS_gtest_throw_on_failure = true; test_MutexRank_monitor_wait_rank_nosafepoint_ (); exit(0); } class MutexRank_monitor_wait_rank_nosafepoint_vm_assert_Test : public ::testing::Test { public: MutexRank_monitor_wait_rank_nosafepoint_vm_assert_Test () {} private: virtual void TestBody(); static ::testing::TestInfo * const test_info_ __attribute__ ((unused)); MutexRank_monitor_wait_rank_nosafepoint_vm_assert_Test (MutexRank_monitor_wait_rank_nosafepoint_vm_assert_Test const &) = delete; void operator=(MutexRank_monitor_wait_rank_nosafepoint_vm_assert_Test const &) = delete;};::testing::TestInfo* const MutexRank_monitor_wait_rank_nosafepoint_vm_assert_Test ::test_info_ = ::testing::internal::MakeAndRegisterTestInfo( "MutexRank", "monitor_wait_rank_nosafepoint_vm_assert", __null , __null, ::testing::internal::CodeLocation("/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 211), (::testing::internal::GetTestTypeId()), ::testing::Test ::SetUpTestCase, ::testing::Test::TearDownTestCase, new ::testing ::internal::TestFactoryImpl< MutexRank_monitor_wait_rank_nosafepoint_vm_assert_Test >);void MutexRank_monitor_wait_rank_nosafepoint_vm_assert_Test ::TestBody() { switch (0) case 0: default: if (::testing::internal ::AlwaysTrue()) { const ::testing::internal::RE& gtest_regex = ("assert failed: " ".* Attempting to wait on monitor monitor_rank_nosafepoint_minus_one/.* while holding lock monitor_rank_nosafepoint/.*" "-- possible deadlock. Should not block\\(wait\\) while holding a lock of rank nosafepoint or below." ); ::testing::internal::DeathTest* gtest_dt; if (!::testing:: internal::DeathTest::Create("child_MutexRank_monitor_wait_rank_nosafepoint_()" , >est_regex, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 211, >est_dt)) { goto gtest_label_211; } if (gtest_dt != __null) { ::testing::internal::scoped_ptr< ::testing:: internal::DeathTest> gtest_dt_ptr(gtest_dt); switch (gtest_dt ->AssumeRole()) { case ::testing::internal::DeathTest::OVERSEE_TEST : if (!gtest_dt->Passed(::testing::ExitedWithCode(1)(gtest_dt ->Wait()))) { goto gtest_label_211; } break; case ::testing ::internal::DeathTest::EXECUTE_TEST: { ::testing::internal::DeathTest ::ReturnSentinel gtest_sentinel(gtest_dt); if (::testing::internal ::AlwaysTrue()) { child_MutexRank_monitor_wait_rank_nosafepoint_ (); }; gtest_dt->Abort(::testing::internal::DeathTest::TEST_DID_NOT_DIE ); break; } default: break; } } } else gtest_label_211: return ::testing::internal::AssertHelper(::testing::TestPartResult:: kFatalFailure, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 211, ::testing::internal::DeathTest::LastMessage()) = ::testing ::Message(); } void test_MutexRank_monitor_wait_rank_nosafepoint_ () |
| 210 | ".* Attempting to wait on monitor monitor_rank_nosafepoint_minus_one/.* while holding lock monitor_rank_nosafepoint/.*"static void test_MutexRank_monitor_wait_rank_nosafepoint_(); static void child_MutexRank_monitor_wait_rank_nosafepoint_() { ::testing ::FLAGS_gtest_throw_on_failure = true; test_MutexRank_monitor_wait_rank_nosafepoint_ (); exit(0); } class MutexRank_monitor_wait_rank_nosafepoint_vm_assert_Test : public ::testing::Test { public: MutexRank_monitor_wait_rank_nosafepoint_vm_assert_Test () {} private: virtual void TestBody(); static ::testing::TestInfo * const test_info_ __attribute__ ((unused)); MutexRank_monitor_wait_rank_nosafepoint_vm_assert_Test (MutexRank_monitor_wait_rank_nosafepoint_vm_assert_Test const &) = delete; void operator=(MutexRank_monitor_wait_rank_nosafepoint_vm_assert_Test const &) = delete;};::testing::TestInfo* const MutexRank_monitor_wait_rank_nosafepoint_vm_assert_Test ::test_info_ = ::testing::internal::MakeAndRegisterTestInfo( "MutexRank", "monitor_wait_rank_nosafepoint_vm_assert", __null , __null, ::testing::internal::CodeLocation("/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 211), (::testing::internal::GetTestTypeId()), ::testing::Test ::SetUpTestCase, ::testing::Test::TearDownTestCase, new ::testing ::internal::TestFactoryImpl< MutexRank_monitor_wait_rank_nosafepoint_vm_assert_Test >);void MutexRank_monitor_wait_rank_nosafepoint_vm_assert_Test ::TestBody() { switch (0) case 0: default: if (::testing::internal ::AlwaysTrue()) { const ::testing::internal::RE& gtest_regex = ("assert failed: " ".* Attempting to wait on monitor monitor_rank_nosafepoint_minus_one/.* while holding lock monitor_rank_nosafepoint/.*" "-- possible deadlock. Should not block\\(wait\\) while holding a lock of rank nosafepoint or below." ); ::testing::internal::DeathTest* gtest_dt; if (!::testing:: internal::DeathTest::Create("child_MutexRank_monitor_wait_rank_nosafepoint_()" , >est_regex, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 211, >est_dt)) { goto gtest_label_211; } if (gtest_dt != __null) { ::testing::internal::scoped_ptr< ::testing:: internal::DeathTest> gtest_dt_ptr(gtest_dt); switch (gtest_dt ->AssumeRole()) { case ::testing::internal::DeathTest::OVERSEE_TEST : if (!gtest_dt->Passed(::testing::ExitedWithCode(1)(gtest_dt ->Wait()))) { goto gtest_label_211; } break; case ::testing ::internal::DeathTest::EXECUTE_TEST: { ::testing::internal::DeathTest ::ReturnSentinel gtest_sentinel(gtest_dt); if (::testing::internal ::AlwaysTrue()) { child_MutexRank_monitor_wait_rank_nosafepoint_ (); }; gtest_dt->Abort(::testing::internal::DeathTest::TEST_DID_NOT_DIE ); break; } default: break; } } } else gtest_label_211: return ::testing::internal::AssertHelper(::testing::TestPartResult:: kFatalFailure, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 211, ::testing::internal::DeathTest::LastMessage()) = ::testing ::Message(); } void test_MutexRank_monitor_wait_rank_nosafepoint_ () |
| 211 | "-- possible deadlock. Should not block\\(wait\\) while holding a lock of rank nosafepoint or below.")static void test_MutexRank_monitor_wait_rank_nosafepoint_(); static void child_MutexRank_monitor_wait_rank_nosafepoint_() { ::testing ::FLAGS_gtest_throw_on_failure = true; test_MutexRank_monitor_wait_rank_nosafepoint_ (); exit(0); } class MutexRank_monitor_wait_rank_nosafepoint_vm_assert_Test : public ::testing::Test { public: MutexRank_monitor_wait_rank_nosafepoint_vm_assert_Test () {} private: virtual void TestBody(); static ::testing::TestInfo * const test_info_ __attribute__ ((unused)); MutexRank_monitor_wait_rank_nosafepoint_vm_assert_Test (MutexRank_monitor_wait_rank_nosafepoint_vm_assert_Test const &) = delete; void operator=(MutexRank_monitor_wait_rank_nosafepoint_vm_assert_Test const &) = delete;};::testing::TestInfo* const MutexRank_monitor_wait_rank_nosafepoint_vm_assert_Test ::test_info_ = ::testing::internal::MakeAndRegisterTestInfo( "MutexRank", "monitor_wait_rank_nosafepoint_vm_assert", __null , __null, ::testing::internal::CodeLocation("/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 211), (::testing::internal::GetTestTypeId()), ::testing::Test ::SetUpTestCase, ::testing::Test::TearDownTestCase, new ::testing ::internal::TestFactoryImpl< MutexRank_monitor_wait_rank_nosafepoint_vm_assert_Test >);void MutexRank_monitor_wait_rank_nosafepoint_vm_assert_Test ::TestBody() { switch (0) case 0: default: if (::testing::internal ::AlwaysTrue()) { const ::testing::internal::RE& gtest_regex = ("assert failed: " ".* Attempting to wait on monitor monitor_rank_nosafepoint_minus_one/.* while holding lock monitor_rank_nosafepoint/.*" "-- possible deadlock. Should not block\\(wait\\) while holding a lock of rank nosafepoint or below." ); ::testing::internal::DeathTest* gtest_dt; if (!::testing:: internal::DeathTest::Create("child_MutexRank_monitor_wait_rank_nosafepoint_()" , >est_regex, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 211, >est_dt)) { goto gtest_label_211; } if (gtest_dt != __null) { ::testing::internal::scoped_ptr< ::testing:: internal::DeathTest> gtest_dt_ptr(gtest_dt); switch (gtest_dt ->AssumeRole()) { case ::testing::internal::DeathTest::OVERSEE_TEST : if (!gtest_dt->Passed(::testing::ExitedWithCode(1)(gtest_dt ->Wait()))) { goto gtest_label_211; } break; case ::testing ::internal::DeathTest::EXECUTE_TEST: { ::testing::internal::DeathTest ::ReturnSentinel gtest_sentinel(gtest_dt); if (::testing::internal ::AlwaysTrue()) { child_MutexRank_monitor_wait_rank_nosafepoint_ (); }; gtest_dt->Abort(::testing::internal::DeathTest::TEST_DID_NOT_DIE ); break; } default: break; } } } else gtest_label_211: return ::testing::internal::AssertHelper(::testing::TestPartResult:: kFatalFailure, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 211, ::testing::internal::DeathTest::LastMessage()) = ::testing ::Message(); } void test_MutexRank_monitor_wait_rank_nosafepoint_ () { |
| 212 | JavaThread* THREAD__the_thread__ = JavaThread::current(); |
| 213 | ThreadInVMfromNative invm(THREAD__the_thread__); |
| 214 | |
| 215 | Monitor* monitor_rank_nosafepoint = new Monitor(Mutex::nosafepoint, "monitor_rank_nosafepoint"); |
| 216 | Monitor* monitor_rank_nosafepoint_minus_one = new Monitor(Mutex::nosafepoint - 1, |
| 217 | "monitor_rank_nosafepoint_minus_one"); |
| 218 | |
| 219 | monitor_rank_nosafepoint->lock_without_safepoint_check(); |
| 220 | monitor_rank_nosafepoint_minus_one->lock_without_safepoint_check(); |
| 221 | monitor_rank_nosafepoint_minus_one->wait_without_safepoint_check(1); |
| 222 | monitor_rank_nosafepoint_minus_one->unlock(); |
| 223 | monitor_rank_nosafepoint->unlock(); |
| 224 | } |
| 225 | |
| 226 | // NonJavaThreads can't wait while holding tty lock or below. |
| 227 | class VM_MutexWaitTTY : public VM_GTestExecuteAtSafepoint { |
| 228 | public: |
| 229 | void doit() { |
| 230 | Monitor* monitor_rank_tty = new Monitor(Mutex::tty, "monitor_rank_tty"); |
| 231 | Monitor* monitor_rank_event = new Monitor(Mutex::event, "monitor_rank_event"); |
| 232 | |
| 233 | monitor_rank_tty->lock_without_safepoint_check(); |
| 234 | monitor_rank_event->lock_without_safepoint_check(); |
| 235 | monitor_rank_event->wait_without_safepoint_check(1); |
| 236 | monitor_rank_event->unlock(); |
| 237 | monitor_rank_tty->unlock(); |
| 238 | } |
| 239 | }; |
| 240 | |
| 241 | TEST_VM_ASSERT_MSG(MutexRank, monitor_wait_event_tty,static void test_MutexRank_monitor_wait_event_tty_(); static void child_MutexRank_monitor_wait_event_tty_() { ::testing::FLAGS_gtest_throw_on_failure = true; test_MutexRank_monitor_wait_event_tty_(); exit(0); } class MutexRank_monitor_wait_event_tty_vm_assert_Test : public ::testing::Test { public: MutexRank_monitor_wait_event_tty_vm_assert_Test () {} private: virtual void TestBody(); static ::testing::TestInfo * const test_info_ __attribute__ ((unused)); MutexRank_monitor_wait_event_tty_vm_assert_Test (MutexRank_monitor_wait_event_tty_vm_assert_Test const &) = delete; void operator=(MutexRank_monitor_wait_event_tty_vm_assert_Test const &) = delete;};::testing::TestInfo* const MutexRank_monitor_wait_event_tty_vm_assert_Test ::test_info_ = ::testing::internal::MakeAndRegisterTestInfo( "MutexRank", "monitor_wait_event_tty_vm_assert", __null, __null , ::testing::internal::CodeLocation("/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 243), (::testing::internal::GetTestTypeId()), ::testing::Test ::SetUpTestCase, ::testing::Test::TearDownTestCase, new ::testing ::internal::TestFactoryImpl< MutexRank_monitor_wait_event_tty_vm_assert_Test >);void MutexRank_monitor_wait_event_tty_vm_assert_Test::TestBody () { switch (0) case 0: default: if (::testing::internal::AlwaysTrue ()) { const ::testing::internal::RE& gtest_regex = ("assert failed: " ".* Attempting to wait on monitor monitor_rank_event/event while holding lock monitor_rank_tty/tty " "-- possible deadlock. Should not block\\(wait\\) while holding a lock of rank tty or below." ); ::testing::internal::DeathTest* gtest_dt; if (!::testing:: internal::DeathTest::Create("child_MutexRank_monitor_wait_event_tty_()" , >est_regex, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 243, >est_dt)) { goto gtest_label_243; } if (gtest_dt != __null) { ::testing::internal::scoped_ptr< ::testing:: internal::DeathTest> gtest_dt_ptr(gtest_dt); switch (gtest_dt ->AssumeRole()) { case ::testing::internal::DeathTest::OVERSEE_TEST : if (!gtest_dt->Passed(::testing::ExitedWithCode(1)(gtest_dt ->Wait()))) { goto gtest_label_243; } break; case ::testing ::internal::DeathTest::EXECUTE_TEST: { ::testing::internal::DeathTest ::ReturnSentinel gtest_sentinel(gtest_dt); if (::testing::internal ::AlwaysTrue()) { child_MutexRank_monitor_wait_event_tty_(); } ; gtest_dt->Abort(::testing::internal::DeathTest::TEST_DID_NOT_DIE ); break; } default: break; } } } else gtest_label_243: return ::testing::internal::AssertHelper(::testing::TestPartResult:: kFatalFailure, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 243, ::testing::internal::DeathTest::LastMessage()) = ::testing ::Message(); } void test_MutexRank_monitor_wait_event_tty_() |
| 242 | ".* Attempting to wait on monitor monitor_rank_event/event while holding lock monitor_rank_tty/tty "static void test_MutexRank_monitor_wait_event_tty_(); static void child_MutexRank_monitor_wait_event_tty_() { ::testing::FLAGS_gtest_throw_on_failure = true; test_MutexRank_monitor_wait_event_tty_(); exit(0); } class MutexRank_monitor_wait_event_tty_vm_assert_Test : public ::testing::Test { public: MutexRank_monitor_wait_event_tty_vm_assert_Test () {} private: virtual void TestBody(); static ::testing::TestInfo * const test_info_ __attribute__ ((unused)); MutexRank_monitor_wait_event_tty_vm_assert_Test (MutexRank_monitor_wait_event_tty_vm_assert_Test const &) = delete; void operator=(MutexRank_monitor_wait_event_tty_vm_assert_Test const &) = delete;};::testing::TestInfo* const MutexRank_monitor_wait_event_tty_vm_assert_Test ::test_info_ = ::testing::internal::MakeAndRegisterTestInfo( "MutexRank", "monitor_wait_event_tty_vm_assert", __null, __null , ::testing::internal::CodeLocation("/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 243), (::testing::internal::GetTestTypeId()), ::testing::Test ::SetUpTestCase, ::testing::Test::TearDownTestCase, new ::testing ::internal::TestFactoryImpl< MutexRank_monitor_wait_event_tty_vm_assert_Test >);void MutexRank_monitor_wait_event_tty_vm_assert_Test::TestBody () { switch (0) case 0: default: if (::testing::internal::AlwaysTrue ()) { const ::testing::internal::RE& gtest_regex = ("assert failed: " ".* Attempting to wait on monitor monitor_rank_event/event while holding lock monitor_rank_tty/tty " "-- possible deadlock. Should not block\\(wait\\) while holding a lock of rank tty or below." ); ::testing::internal::DeathTest* gtest_dt; if (!::testing:: internal::DeathTest::Create("child_MutexRank_monitor_wait_event_tty_()" , >est_regex, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 243, >est_dt)) { goto gtest_label_243; } if (gtest_dt != __null) { ::testing::internal::scoped_ptr< ::testing:: internal::DeathTest> gtest_dt_ptr(gtest_dt); switch (gtest_dt ->AssumeRole()) { case ::testing::internal::DeathTest::OVERSEE_TEST : if (!gtest_dt->Passed(::testing::ExitedWithCode(1)(gtest_dt ->Wait()))) { goto gtest_label_243; } break; case ::testing ::internal::DeathTest::EXECUTE_TEST: { ::testing::internal::DeathTest ::ReturnSentinel gtest_sentinel(gtest_dt); if (::testing::internal ::AlwaysTrue()) { child_MutexRank_monitor_wait_event_tty_(); } ; gtest_dt->Abort(::testing::internal::DeathTest::TEST_DID_NOT_DIE ); break; } default: break; } } } else gtest_label_243: return ::testing::internal::AssertHelper(::testing::TestPartResult:: kFatalFailure, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 243, ::testing::internal::DeathTest::LastMessage()) = ::testing ::Message(); } void test_MutexRank_monitor_wait_event_tty_() |
| 243 | "-- possible deadlock. Should not block\\(wait\\) while holding a lock of rank tty or below.")static void test_MutexRank_monitor_wait_event_tty_(); static void child_MutexRank_monitor_wait_event_tty_() { ::testing::FLAGS_gtest_throw_on_failure = true; test_MutexRank_monitor_wait_event_tty_(); exit(0); } class MutexRank_monitor_wait_event_tty_vm_assert_Test : public ::testing::Test { public: MutexRank_monitor_wait_event_tty_vm_assert_Test () {} private: virtual void TestBody(); static ::testing::TestInfo * const test_info_ __attribute__ ((unused)); MutexRank_monitor_wait_event_tty_vm_assert_Test (MutexRank_monitor_wait_event_tty_vm_assert_Test const &) = delete; void operator=(MutexRank_monitor_wait_event_tty_vm_assert_Test const &) = delete;};::testing::TestInfo* const MutexRank_monitor_wait_event_tty_vm_assert_Test ::test_info_ = ::testing::internal::MakeAndRegisterTestInfo( "MutexRank", "monitor_wait_event_tty_vm_assert", __null, __null , ::testing::internal::CodeLocation("/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 243), (::testing::internal::GetTestTypeId()), ::testing::Test ::SetUpTestCase, ::testing::Test::TearDownTestCase, new ::testing ::internal::TestFactoryImpl< MutexRank_monitor_wait_event_tty_vm_assert_Test >);void MutexRank_monitor_wait_event_tty_vm_assert_Test::TestBody () { switch (0) case 0: default: if (::testing::internal::AlwaysTrue ()) { const ::testing::internal::RE& gtest_regex = ("assert failed: " ".* Attempting to wait on monitor monitor_rank_event/event while holding lock monitor_rank_tty/tty " "-- possible deadlock. Should not block\\(wait\\) while holding a lock of rank tty or below." ); ::testing::internal::DeathTest* gtest_dt; if (!::testing:: internal::DeathTest::Create("child_MutexRank_monitor_wait_event_tty_()" , >est_regex, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 243, >est_dt)) { goto gtest_label_243; } if (gtest_dt != __null) { ::testing::internal::scoped_ptr< ::testing:: internal::DeathTest> gtest_dt_ptr(gtest_dt); switch (gtest_dt ->AssumeRole()) { case ::testing::internal::DeathTest::OVERSEE_TEST : if (!gtest_dt->Passed(::testing::ExitedWithCode(1)(gtest_dt ->Wait()))) { goto gtest_label_243; } break; case ::testing ::internal::DeathTest::EXECUTE_TEST: { ::testing::internal::DeathTest ::ReturnSentinel gtest_sentinel(gtest_dt); if (::testing::internal ::AlwaysTrue()) { child_MutexRank_monitor_wait_event_tty_(); } ; gtest_dt->Abort(::testing::internal::DeathTest::TEST_DID_NOT_DIE ); break; } default: break; } } } else gtest_label_243: return ::testing::internal::AssertHelper(::testing::TestPartResult:: kFatalFailure, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 243, ::testing::internal::DeathTest::LastMessage()) = ::testing ::Message(); } void test_MutexRank_monitor_wait_event_tty_() { |
| 244 | VM_MutexWaitTTY op; |
| 245 | ThreadInVMfromNative invm(JavaThread::current()); |
| 246 | VMThread::execute(&op); |
| 247 | } |
| 248 | |
| 249 | TEST_VM_ASSERT_MSG(MutexRank, monitor_wait_tty_nosafepoint,static void test_MutexRank_monitor_wait_tty_nosafepoint_(); static void child_MutexRank_monitor_wait_tty_nosafepoint_() { ::testing ::FLAGS_gtest_throw_on_failure = true; test_MutexRank_monitor_wait_tty_nosafepoint_ (); exit(0); } class MutexRank_monitor_wait_tty_nosafepoint_vm_assert_Test : public ::testing::Test { public: MutexRank_monitor_wait_tty_nosafepoint_vm_assert_Test () {} private: virtual void TestBody(); static ::testing::TestInfo * const test_info_ __attribute__ ((unused)); MutexRank_monitor_wait_tty_nosafepoint_vm_assert_Test (MutexRank_monitor_wait_tty_nosafepoint_vm_assert_Test const & ) = delete; void operator=(MutexRank_monitor_wait_tty_nosafepoint_vm_assert_Test const &) = delete;};::testing::TestInfo* const MutexRank_monitor_wait_tty_nosafepoint_vm_assert_Test ::test_info_ = ::testing::internal::MakeAndRegisterTestInfo( "MutexRank", "monitor_wait_tty_nosafepoint_vm_assert", __null , __null, ::testing::internal::CodeLocation("/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 251), (::testing::internal::GetTestTypeId()), ::testing::Test ::SetUpTestCase, ::testing::Test::TearDownTestCase, new ::testing ::internal::TestFactoryImpl< MutexRank_monitor_wait_tty_nosafepoint_vm_assert_Test >);void MutexRank_monitor_wait_tty_nosafepoint_vm_assert_Test ::TestBody() { switch (0) case 0: default: if (::testing::internal ::AlwaysTrue()) { const ::testing::internal::RE& gtest_regex = ("assert failed: " ".* Attempting to wait on monitor monitor_rank_tty/.* while holding lock monitor_rank_nosafepoint/.* " "-- possible deadlock. Should not block\\(wait\\) while holding a lock of rank nosafepoint or below." ); ::testing::internal::DeathTest* gtest_dt; if (!::testing:: internal::DeathTest::Create("child_MutexRank_monitor_wait_tty_nosafepoint_()" , >est_regex, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 251, >est_dt)) { goto gtest_label_251; } if (gtest_dt != __null) { ::testing::internal::scoped_ptr< ::testing:: internal::DeathTest> gtest_dt_ptr(gtest_dt); switch (gtest_dt ->AssumeRole()) { case ::testing::internal::DeathTest::OVERSEE_TEST : if (!gtest_dt->Passed(::testing::ExitedWithCode(1)(gtest_dt ->Wait()))) { goto gtest_label_251; } break; case ::testing ::internal::DeathTest::EXECUTE_TEST: { ::testing::internal::DeathTest ::ReturnSentinel gtest_sentinel(gtest_dt); if (::testing::internal ::AlwaysTrue()) { child_MutexRank_monitor_wait_tty_nosafepoint_ (); }; gtest_dt->Abort(::testing::internal::DeathTest::TEST_DID_NOT_DIE ); break; } default: break; } } } else gtest_label_251: return ::testing::internal::AssertHelper(::testing::TestPartResult:: kFatalFailure, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 251, ::testing::internal::DeathTest::LastMessage()) = ::testing ::Message(); } void test_MutexRank_monitor_wait_tty_nosafepoint_ () |
| 250 | ".* Attempting to wait on monitor monitor_rank_tty/.* while holding lock monitor_rank_nosafepoint/.* "static void test_MutexRank_monitor_wait_tty_nosafepoint_(); static void child_MutexRank_monitor_wait_tty_nosafepoint_() { ::testing ::FLAGS_gtest_throw_on_failure = true; test_MutexRank_monitor_wait_tty_nosafepoint_ (); exit(0); } class MutexRank_monitor_wait_tty_nosafepoint_vm_assert_Test : public ::testing::Test { public: MutexRank_monitor_wait_tty_nosafepoint_vm_assert_Test () {} private: virtual void TestBody(); static ::testing::TestInfo * const test_info_ __attribute__ ((unused)); MutexRank_monitor_wait_tty_nosafepoint_vm_assert_Test (MutexRank_monitor_wait_tty_nosafepoint_vm_assert_Test const & ) = delete; void operator=(MutexRank_monitor_wait_tty_nosafepoint_vm_assert_Test const &) = delete;};::testing::TestInfo* const MutexRank_monitor_wait_tty_nosafepoint_vm_assert_Test ::test_info_ = ::testing::internal::MakeAndRegisterTestInfo( "MutexRank", "monitor_wait_tty_nosafepoint_vm_assert", __null , __null, ::testing::internal::CodeLocation("/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 251), (::testing::internal::GetTestTypeId()), ::testing::Test ::SetUpTestCase, ::testing::Test::TearDownTestCase, new ::testing ::internal::TestFactoryImpl< MutexRank_monitor_wait_tty_nosafepoint_vm_assert_Test >);void MutexRank_monitor_wait_tty_nosafepoint_vm_assert_Test ::TestBody() { switch (0) case 0: default: if (::testing::internal ::AlwaysTrue()) { const ::testing::internal::RE& gtest_regex = ("assert failed: " ".* Attempting to wait on monitor monitor_rank_tty/.* while holding lock monitor_rank_nosafepoint/.* " "-- possible deadlock. Should not block\\(wait\\) while holding a lock of rank nosafepoint or below." ); ::testing::internal::DeathTest* gtest_dt; if (!::testing:: internal::DeathTest::Create("child_MutexRank_monitor_wait_tty_nosafepoint_()" , >est_regex, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 251, >est_dt)) { goto gtest_label_251; } if (gtest_dt != __null) { ::testing::internal::scoped_ptr< ::testing:: internal::DeathTest> gtest_dt_ptr(gtest_dt); switch (gtest_dt ->AssumeRole()) { case ::testing::internal::DeathTest::OVERSEE_TEST : if (!gtest_dt->Passed(::testing::ExitedWithCode(1)(gtest_dt ->Wait()))) { goto gtest_label_251; } break; case ::testing ::internal::DeathTest::EXECUTE_TEST: { ::testing::internal::DeathTest ::ReturnSentinel gtest_sentinel(gtest_dt); if (::testing::internal ::AlwaysTrue()) { child_MutexRank_monitor_wait_tty_nosafepoint_ (); }; gtest_dt->Abort(::testing::internal::DeathTest::TEST_DID_NOT_DIE ); break; } default: break; } } } else gtest_label_251: return ::testing::internal::AssertHelper(::testing::TestPartResult:: kFatalFailure, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 251, ::testing::internal::DeathTest::LastMessage()) = ::testing ::Message(); } void test_MutexRank_monitor_wait_tty_nosafepoint_ () |
| 251 | "-- possible deadlock. Should not block\\(wait\\) while holding a lock of rank nosafepoint or below.")static void test_MutexRank_monitor_wait_tty_nosafepoint_(); static void child_MutexRank_monitor_wait_tty_nosafepoint_() { ::testing ::FLAGS_gtest_throw_on_failure = true; test_MutexRank_monitor_wait_tty_nosafepoint_ (); exit(0); } class MutexRank_monitor_wait_tty_nosafepoint_vm_assert_Test : public ::testing::Test { public: MutexRank_monitor_wait_tty_nosafepoint_vm_assert_Test () {} private: virtual void TestBody(); static ::testing::TestInfo * const test_info_ __attribute__ ((unused)); MutexRank_monitor_wait_tty_nosafepoint_vm_assert_Test (MutexRank_monitor_wait_tty_nosafepoint_vm_assert_Test const & ) = delete; void operator=(MutexRank_monitor_wait_tty_nosafepoint_vm_assert_Test const &) = delete;};::testing::TestInfo* const MutexRank_monitor_wait_tty_nosafepoint_vm_assert_Test ::test_info_ = ::testing::internal::MakeAndRegisterTestInfo( "MutexRank", "monitor_wait_tty_nosafepoint_vm_assert", __null , __null, ::testing::internal::CodeLocation("/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 251), (::testing::internal::GetTestTypeId()), ::testing::Test ::SetUpTestCase, ::testing::Test::TearDownTestCase, new ::testing ::internal::TestFactoryImpl< MutexRank_monitor_wait_tty_nosafepoint_vm_assert_Test >);void MutexRank_monitor_wait_tty_nosafepoint_vm_assert_Test ::TestBody() { switch (0) case 0: default: if (::testing::internal ::AlwaysTrue()) { const ::testing::internal::RE& gtest_regex = ("assert failed: " ".* Attempting to wait on monitor monitor_rank_tty/.* while holding lock monitor_rank_nosafepoint/.* " "-- possible deadlock. Should not block\\(wait\\) while holding a lock of rank nosafepoint or below." ); ::testing::internal::DeathTest* gtest_dt; if (!::testing:: internal::DeathTest::Create("child_MutexRank_monitor_wait_tty_nosafepoint_()" , >est_regex, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 251, >est_dt)) { goto gtest_label_251; } if (gtest_dt != __null) { ::testing::internal::scoped_ptr< ::testing:: internal::DeathTest> gtest_dt_ptr(gtest_dt); switch (gtest_dt ->AssumeRole()) { case ::testing::internal::DeathTest::OVERSEE_TEST : if (!gtest_dt->Passed(::testing::ExitedWithCode(1)(gtest_dt ->Wait()))) { goto gtest_label_251; } break; case ::testing ::internal::DeathTest::EXECUTE_TEST: { ::testing::internal::DeathTest ::ReturnSentinel gtest_sentinel(gtest_dt); if (::testing::internal ::AlwaysTrue()) { child_MutexRank_monitor_wait_tty_nosafepoint_ (); }; gtest_dt->Abort(::testing::internal::DeathTest::TEST_DID_NOT_DIE ); break; } default: break; } } } else gtest_label_251: return ::testing::internal::AssertHelper(::testing::TestPartResult:: kFatalFailure, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 251, ::testing::internal::DeathTest::LastMessage()) = ::testing ::Message(); } void test_MutexRank_monitor_wait_tty_nosafepoint_ () { |
| 252 | JavaThread* THREAD__the_thread__ = JavaThread::current(); |
| 253 | ThreadInVMfromNative invm(THREAD__the_thread__); |
| 254 | |
| 255 | Monitor* monitor_rank_nosafepoint = new Monitor(Mutex::nosafepoint, "monitor_rank_nosafepoint"); |
| 256 | Monitor* monitor_rank_tty = new Monitor(Mutex::tty, "monitor_rank_tty"); |
| 257 | |
| 258 | monitor_rank_nosafepoint->lock_without_safepoint_check(); |
| 259 | monitor_rank_tty->lock_without_safepoint_check(); |
| 260 | monitor_rank_tty->wait_without_safepoint_check(1); |
| 261 | monitor_rank_tty->unlock(); |
| 262 | monitor_rank_nosafepoint->unlock(); |
| 263 | } |
| 264 | |
| 265 | TEST_VM_ASSERT_MSG(MutexRank, monitor_nosafepoint_vm_block,static void test_MutexRank_monitor_nosafepoint_vm_block_(); static void child_MutexRank_monitor_nosafepoint_vm_block_() { ::testing ::FLAGS_gtest_throw_on_failure = true; test_MutexRank_monitor_nosafepoint_vm_block_ (); exit(0); } class MutexRank_monitor_nosafepoint_vm_block_vm_assert_Test : public ::testing::Test { public: MutexRank_monitor_nosafepoint_vm_block_vm_assert_Test () {} private: virtual void TestBody(); static ::testing::TestInfo * const test_info_ __attribute__ ((unused)); MutexRank_monitor_nosafepoint_vm_block_vm_assert_Test (MutexRank_monitor_nosafepoint_vm_block_vm_assert_Test const & ) = delete; void operator=(MutexRank_monitor_nosafepoint_vm_block_vm_assert_Test const &) = delete;};::testing::TestInfo* const MutexRank_monitor_nosafepoint_vm_block_vm_assert_Test ::test_info_ = ::testing::internal::MakeAndRegisterTestInfo( "MutexRank", "monitor_nosafepoint_vm_block_vm_assert", __null , __null, ::testing::internal::CodeLocation("/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 266), (::testing::internal::GetTestTypeId()), ::testing::Test ::SetUpTestCase, ::testing::Test::TearDownTestCase, new ::testing ::internal::TestFactoryImpl< MutexRank_monitor_nosafepoint_vm_block_vm_assert_Test >);void MutexRank_monitor_nosafepoint_vm_block_vm_assert_Test ::TestBody() { switch (0) case 0: default: if (::testing::internal ::AlwaysTrue()) { const ::testing::internal::RE& gtest_regex = ("assert failed: " ".*Locks that don't check for safepoint should always allow the vm to block: monitor_rank_nosafepoint" ); ::testing::internal::DeathTest* gtest_dt; if (!::testing:: internal::DeathTest::Create("child_MutexRank_monitor_nosafepoint_vm_block_()" , >est_regex, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 266, >est_dt)) { goto gtest_label_266; } if (gtest_dt != __null) { ::testing::internal::scoped_ptr< ::testing:: internal::DeathTest> gtest_dt_ptr(gtest_dt); switch (gtest_dt ->AssumeRole()) { case ::testing::internal::DeathTest::OVERSEE_TEST : if (!gtest_dt->Passed(::testing::ExitedWithCode(1)(gtest_dt ->Wait()))) { goto gtest_label_266; } break; case ::testing ::internal::DeathTest::EXECUTE_TEST: { ::testing::internal::DeathTest ::ReturnSentinel gtest_sentinel(gtest_dt); if (::testing::internal ::AlwaysTrue()) { child_MutexRank_monitor_nosafepoint_vm_block_ (); }; gtest_dt->Abort(::testing::internal::DeathTest::TEST_DID_NOT_DIE ); break; } default: break; } } } else gtest_label_266: return ::testing::internal::AssertHelper(::testing::TestPartResult:: kFatalFailure, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 266, ::testing::internal::DeathTest::LastMessage()) = ::testing ::Message(); } void test_MutexRank_monitor_nosafepoint_vm_block_ () |
| 266 | ".*Locks that don't check for safepoint should always allow the vm to block: monitor_rank_nosafepoint")static void test_MutexRank_monitor_nosafepoint_vm_block_(); static void child_MutexRank_monitor_nosafepoint_vm_block_() { ::testing ::FLAGS_gtest_throw_on_failure = true; test_MutexRank_monitor_nosafepoint_vm_block_ (); exit(0); } class MutexRank_monitor_nosafepoint_vm_block_vm_assert_Test : public ::testing::Test { public: MutexRank_monitor_nosafepoint_vm_block_vm_assert_Test () {} private: virtual void TestBody(); static ::testing::TestInfo * const test_info_ __attribute__ ((unused)); MutexRank_monitor_nosafepoint_vm_block_vm_assert_Test (MutexRank_monitor_nosafepoint_vm_block_vm_assert_Test const & ) = delete; void operator=(MutexRank_monitor_nosafepoint_vm_block_vm_assert_Test const &) = delete;};::testing::TestInfo* const MutexRank_monitor_nosafepoint_vm_block_vm_assert_Test ::test_info_ = ::testing::internal::MakeAndRegisterTestInfo( "MutexRank", "monitor_nosafepoint_vm_block_vm_assert", __null , __null, ::testing::internal::CodeLocation("/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 266), (::testing::internal::GetTestTypeId()), ::testing::Test ::SetUpTestCase, ::testing::Test::TearDownTestCase, new ::testing ::internal::TestFactoryImpl< MutexRank_monitor_nosafepoint_vm_block_vm_assert_Test >);void MutexRank_monitor_nosafepoint_vm_block_vm_assert_Test ::TestBody() { switch (0) case 0: default: if (::testing::internal ::AlwaysTrue()) { const ::testing::internal::RE& gtest_regex = ("assert failed: " ".*Locks that don't check for safepoint should always allow the vm to block: monitor_rank_nosafepoint" ); ::testing::internal::DeathTest* gtest_dt; if (!::testing:: internal::DeathTest::Create("child_MutexRank_monitor_nosafepoint_vm_block_()" , >est_regex, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 266, >est_dt)) { goto gtest_label_266; } if (gtest_dt != __null) { ::testing::internal::scoped_ptr< ::testing:: internal::DeathTest> gtest_dt_ptr(gtest_dt); switch (gtest_dt ->AssumeRole()) { case ::testing::internal::DeathTest::OVERSEE_TEST : if (!gtest_dt->Passed(::testing::ExitedWithCode(1)(gtest_dt ->Wait()))) { goto gtest_label_266; } break; case ::testing ::internal::DeathTest::EXECUTE_TEST: { ::testing::internal::DeathTest ::ReturnSentinel gtest_sentinel(gtest_dt); if (::testing::internal ::AlwaysTrue()) { child_MutexRank_monitor_nosafepoint_vm_block_ (); }; gtest_dt->Abort(::testing::internal::DeathTest::TEST_DID_NOT_DIE ); break; } default: break; } } } else gtest_label_266: return ::testing::internal::AssertHelper(::testing::TestPartResult:: kFatalFailure, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 266, ::testing::internal::DeathTest::LastMessage()) = ::testing ::Message(); } void test_MutexRank_monitor_nosafepoint_vm_block_ () { |
| 267 | JavaThread* THREAD__the_thread__ = JavaThread::current(); |
| 268 | ThreadInVMfromNative invm(THREAD__the_thread__); |
| 269 | |
| 270 | Monitor* monitor_rank_nosafepoint = new Monitor(Mutex::nosafepoint, "monitor_rank_nosafepoint", false); |
| 271 | monitor_rank_nosafepoint->lock_without_safepoint_check(); |
| 272 | monitor_rank_nosafepoint->unlock(); |
| 273 | } |
| 274 | |
| 275 | TEST_VM_ASSERT_MSG(MutexRank, monitor_negative_rank,static void test_MutexRank_monitor_negative_rank_(); static void child_MutexRank_monitor_negative_rank_() { ::testing::FLAGS_gtest_throw_on_failure = true; test_MutexRank_monitor_negative_rank_(); exit(0); } class MutexRank_monitor_negative_rank_vm_assert_Test : public ::testing ::Test { public: MutexRank_monitor_negative_rank_vm_assert_Test () {} private: virtual void TestBody(); static ::testing::TestInfo * const test_info_ __attribute__ ((unused)); MutexRank_monitor_negative_rank_vm_assert_Test (MutexRank_monitor_negative_rank_vm_assert_Test const &) = delete; void operator=(MutexRank_monitor_negative_rank_vm_assert_Test const &) = delete;};::testing::TestInfo* const MutexRank_monitor_negative_rank_vm_assert_Test ::test_info_ = ::testing::internal::MakeAndRegisterTestInfo( "MutexRank", "monitor_negative_rank_vm_assert", __null, __null , ::testing::internal::CodeLocation("/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 276), (::testing::internal::GetTestTypeId()), ::testing::Test ::SetUpTestCase, ::testing::Test::TearDownTestCase, new ::testing ::internal::TestFactoryImpl< MutexRank_monitor_negative_rank_vm_assert_Test >);void MutexRank_monitor_negative_rank_vm_assert_Test::TestBody () { switch (0) case 0: default: if (::testing::internal::AlwaysTrue ()) { const ::testing::internal::RE& gtest_regex = ("assert failed: " ".*Bad lock rank"); ::testing::internal::DeathTest* gtest_dt ; if (!::testing::internal::DeathTest::Create("child_MutexRank_monitor_negative_rank_()" , >est_regex, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 276, >est_dt)) { goto gtest_label_276; } if (gtest_dt != __null) { ::testing::internal::scoped_ptr< ::testing:: internal::DeathTest> gtest_dt_ptr(gtest_dt); switch (gtest_dt ->AssumeRole()) { case ::testing::internal::DeathTest::OVERSEE_TEST : if (!gtest_dt->Passed(::testing::ExitedWithCode(1)(gtest_dt ->Wait()))) { goto gtest_label_276; } break; case ::testing ::internal::DeathTest::EXECUTE_TEST: { ::testing::internal::DeathTest ::ReturnSentinel gtest_sentinel(gtest_dt); if (::testing::internal ::AlwaysTrue()) { child_MutexRank_monitor_negative_rank_(); } ; gtest_dt->Abort(::testing::internal::DeathTest::TEST_DID_NOT_DIE ); break; } default: break; } } } else gtest_label_276: return ::testing::internal::AssertHelper(::testing::TestPartResult:: kFatalFailure, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 276, ::testing::internal::DeathTest::LastMessage()) = ::testing ::Message(); } void test_MutexRank_monitor_negative_rank_() |
| 276 | ".*Bad lock rank")static void test_MutexRank_monitor_negative_rank_(); static void child_MutexRank_monitor_negative_rank_() { ::testing::FLAGS_gtest_throw_on_failure = true; test_MutexRank_monitor_negative_rank_(); exit(0); } class MutexRank_monitor_negative_rank_vm_assert_Test : public ::testing ::Test { public: MutexRank_monitor_negative_rank_vm_assert_Test () {} private: virtual void TestBody(); static ::testing::TestInfo * const test_info_ __attribute__ ((unused)); MutexRank_monitor_negative_rank_vm_assert_Test (MutexRank_monitor_negative_rank_vm_assert_Test const &) = delete; void operator=(MutexRank_monitor_negative_rank_vm_assert_Test const &) = delete;};::testing::TestInfo* const MutexRank_monitor_negative_rank_vm_assert_Test ::test_info_ = ::testing::internal::MakeAndRegisterTestInfo( "MutexRank", "monitor_negative_rank_vm_assert", __null, __null , ::testing::internal::CodeLocation("/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 276), (::testing::internal::GetTestTypeId()), ::testing::Test ::SetUpTestCase, ::testing::Test::TearDownTestCase, new ::testing ::internal::TestFactoryImpl< MutexRank_monitor_negative_rank_vm_assert_Test >);void MutexRank_monitor_negative_rank_vm_assert_Test::TestBody () { switch (0) case 0: default: if (::testing::internal::AlwaysTrue ()) { const ::testing::internal::RE& gtest_regex = ("assert failed: " ".*Bad lock rank"); ::testing::internal::DeathTest* gtest_dt ; if (!::testing::internal::DeathTest::Create("child_MutexRank_monitor_negative_rank_()" , >est_regex, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 276, >est_dt)) { goto gtest_label_276; } if (gtest_dt != __null) { ::testing::internal::scoped_ptr< ::testing:: internal::DeathTest> gtest_dt_ptr(gtest_dt); switch (gtest_dt ->AssumeRole()) { case ::testing::internal::DeathTest::OVERSEE_TEST : if (!gtest_dt->Passed(::testing::ExitedWithCode(1)(gtest_dt ->Wait()))) { goto gtest_label_276; } break; case ::testing ::internal::DeathTest::EXECUTE_TEST: { ::testing::internal::DeathTest ::ReturnSentinel gtest_sentinel(gtest_dt); if (::testing::internal ::AlwaysTrue()) { child_MutexRank_monitor_negative_rank_(); } ; gtest_dt->Abort(::testing::internal::DeathTest::TEST_DID_NOT_DIE ); break; } default: break; } } } else gtest_label_276: return ::testing::internal::AssertHelper(::testing::TestPartResult:: kFatalFailure, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 276, ::testing::internal::DeathTest::LastMessage()) = ::testing ::Message(); } void test_MutexRank_monitor_negative_rank_() { |
| 277 | JavaThread* THREAD__the_thread__ = JavaThread::current(); |
| 278 | ThreadInVMfromNative invm(THREAD__the_thread__); |
| 279 | |
| 280 | Monitor* monitor_rank_broken = new Monitor(Mutex::safepoint-100, "monitor_rank_broken"); |
| 281 | monitor_rank_broken->lock_without_safepoint_check(); |
| 282 | monitor_rank_broken->unlock(); |
| 283 | } |
| 284 | |
| 285 | TEST_VM_ASSERT_MSG(MutexRank, monitor_overlapping_oopstorage_rank,static void test_MutexRank_monitor_overlapping_oopstorage_rank_ (); static void child_MutexRank_monitor_overlapping_oopstorage_rank_ () { ::testing::FLAGS_gtest_throw_on_failure = true; test_MutexRank_monitor_overlapping_oopstorage_rank_ (); exit(0); } class MutexRank_monitor_overlapping_oopstorage_rank_vm_assert_Test : public ::testing::Test { public: MutexRank_monitor_overlapping_oopstorage_rank_vm_assert_Test () {} private: virtual void TestBody(); static ::testing::TestInfo * const test_info_ __attribute__ ((unused)); MutexRank_monitor_overlapping_oopstorage_rank_vm_assert_Test (MutexRank_monitor_overlapping_oopstorage_rank_vm_assert_Test const &) = delete; void operator=(MutexRank_monitor_overlapping_oopstorage_rank_vm_assert_Test const &) = delete;};::testing::TestInfo* const MutexRank_monitor_overlapping_oopstorage_rank_vm_assert_Test ::test_info_ = ::testing::internal::MakeAndRegisterTestInfo( "MutexRank", "monitor_overlapping_oopstorage_rank_vm_assert" , __null, __null, ::testing::internal::CodeLocation("/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 286), (::testing::internal::GetTestTypeId()), ::testing::Test ::SetUpTestCase, ::testing::Test::TearDownTestCase, new ::testing ::internal::TestFactoryImpl< MutexRank_monitor_overlapping_oopstorage_rank_vm_assert_Test >);void MutexRank_monitor_overlapping_oopstorage_rank_vm_assert_Test ::TestBody() { switch (0) case 0: default: if (::testing::internal ::AlwaysTrue()) { const ::testing::internal::RE& gtest_regex = ("assert failed: " ".*Rank oopstorage-4 overlaps with tty-1" ); ::testing::internal::DeathTest* gtest_dt; if (!::testing:: internal::DeathTest::Create("child_MutexRank_monitor_overlapping_oopstorage_rank_()" , >est_regex, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 286, >est_dt)) { goto gtest_label_286; } if (gtest_dt != __null) { ::testing::internal::scoped_ptr< ::testing:: internal::DeathTest> gtest_dt_ptr(gtest_dt); switch (gtest_dt ->AssumeRole()) { case ::testing::internal::DeathTest::OVERSEE_TEST : if (!gtest_dt->Passed(::testing::ExitedWithCode(1)(gtest_dt ->Wait()))) { goto gtest_label_286; } break; case ::testing ::internal::DeathTest::EXECUTE_TEST: { ::testing::internal::DeathTest ::ReturnSentinel gtest_sentinel(gtest_dt); if (::testing::internal ::AlwaysTrue()) { child_MutexRank_monitor_overlapping_oopstorage_rank_ (); }; gtest_dt->Abort(::testing::internal::DeathTest::TEST_DID_NOT_DIE ); break; } default: break; } } } else gtest_label_286: return ::testing::internal::AssertHelper(::testing::TestPartResult:: kFatalFailure, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 286, ::testing::internal::DeathTest::LastMessage()) = ::testing ::Message(); } void test_MutexRank_monitor_overlapping_oopstorage_rank_ () |
| 286 | ".*Rank oopstorage-4 overlaps with tty-1")static void test_MutexRank_monitor_overlapping_oopstorage_rank_ (); static void child_MutexRank_monitor_overlapping_oopstorage_rank_ () { ::testing::FLAGS_gtest_throw_on_failure = true; test_MutexRank_monitor_overlapping_oopstorage_rank_ (); exit(0); } class MutexRank_monitor_overlapping_oopstorage_rank_vm_assert_Test : public ::testing::Test { public: MutexRank_monitor_overlapping_oopstorage_rank_vm_assert_Test () {} private: virtual void TestBody(); static ::testing::TestInfo * const test_info_ __attribute__ ((unused)); MutexRank_monitor_overlapping_oopstorage_rank_vm_assert_Test (MutexRank_monitor_overlapping_oopstorage_rank_vm_assert_Test const &) = delete; void operator=(MutexRank_monitor_overlapping_oopstorage_rank_vm_assert_Test const &) = delete;};::testing::TestInfo* const MutexRank_monitor_overlapping_oopstorage_rank_vm_assert_Test ::test_info_ = ::testing::internal::MakeAndRegisterTestInfo( "MutexRank", "monitor_overlapping_oopstorage_rank_vm_assert" , __null, __null, ::testing::internal::CodeLocation("/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 286), (::testing::internal::GetTestTypeId()), ::testing::Test ::SetUpTestCase, ::testing::Test::TearDownTestCase, new ::testing ::internal::TestFactoryImpl< MutexRank_monitor_overlapping_oopstorage_rank_vm_assert_Test >);void MutexRank_monitor_overlapping_oopstorage_rank_vm_assert_Test ::TestBody() { switch (0) case 0: default: if (::testing::internal ::AlwaysTrue()) { const ::testing::internal::RE& gtest_regex = ("assert failed: " ".*Rank oopstorage-4 overlaps with tty-1" ); ::testing::internal::DeathTest* gtest_dt; if (!::testing:: internal::DeathTest::Create("child_MutexRank_monitor_overlapping_oopstorage_rank_()" , >est_regex, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 286, >est_dt)) { goto gtest_label_286; } if (gtest_dt != __null) { ::testing::internal::scoped_ptr< ::testing:: internal::DeathTest> gtest_dt_ptr(gtest_dt); switch (gtest_dt ->AssumeRole()) { case ::testing::internal::DeathTest::OVERSEE_TEST : if (!gtest_dt->Passed(::testing::ExitedWithCode(1)(gtest_dt ->Wait()))) { goto gtest_label_286; } break; case ::testing ::internal::DeathTest::EXECUTE_TEST: { ::testing::internal::DeathTest ::ReturnSentinel gtest_sentinel(gtest_dt); if (::testing::internal ::AlwaysTrue()) { child_MutexRank_monitor_overlapping_oopstorage_rank_ (); }; gtest_dt->Abort(::testing::internal::DeathTest::TEST_DID_NOT_DIE ); break; } default: break; } } } else gtest_label_286: return ::testing::internal::AssertHelper(::testing::TestPartResult:: kFatalFailure, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 286, ::testing::internal::DeathTest::LastMessage()) = ::testing ::Message(); } void test_MutexRank_monitor_overlapping_oopstorage_rank_ () { |
| 287 | JavaThread* THREAD__the_thread__ = JavaThread::current(); |
| 288 | ThreadInVMfromNative invm(THREAD__the_thread__); |
| 289 | |
| 290 | Monitor* monitor_rank_broken = new Monitor(Mutex::oopstorage-4, "monitor_rank_broken"); |
| 291 | } |
| 292 | |
| 293 | TEST_VM_ASSERT_MSG(MutexRank, monitor_overlapping_safepoint_rank,static void test_MutexRank_monitor_overlapping_safepoint_rank_ (); static void child_MutexRank_monitor_overlapping_safepoint_rank_ () { ::testing::FLAGS_gtest_throw_on_failure = true; test_MutexRank_monitor_overlapping_safepoint_rank_ (); exit(0); } class MutexRank_monitor_overlapping_safepoint_rank_vm_assert_Test : public ::testing::Test { public: MutexRank_monitor_overlapping_safepoint_rank_vm_assert_Test () {} private: virtual void TestBody(); static ::testing::TestInfo * const test_info_ __attribute__ ((unused)); MutexRank_monitor_overlapping_safepoint_rank_vm_assert_Test (MutexRank_monitor_overlapping_safepoint_rank_vm_assert_Test const &) = delete; void operator=(MutexRank_monitor_overlapping_safepoint_rank_vm_assert_Test const &) = delete;};::testing::TestInfo* const MutexRank_monitor_overlapping_safepoint_rank_vm_assert_Test ::test_info_ = ::testing::internal::MakeAndRegisterTestInfo( "MutexRank", "monitor_overlapping_safepoint_rank_vm_assert", __null, __null, ::testing::internal::CodeLocation("/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 294), (::testing::internal::GetTestTypeId()), ::testing::Test ::SetUpTestCase, ::testing::Test::TearDownTestCase, new ::testing ::internal::TestFactoryImpl< MutexRank_monitor_overlapping_safepoint_rank_vm_assert_Test >);void MutexRank_monitor_overlapping_safepoint_rank_vm_assert_Test ::TestBody() { switch (0) case 0: default: if (::testing::internal ::AlwaysTrue()) { const ::testing::internal::RE& gtest_regex = ("assert failed: " ".*Rank safepoint-40 overlaps with service-5" ); ::testing::internal::DeathTest* gtest_dt; if (!::testing:: internal::DeathTest::Create("child_MutexRank_monitor_overlapping_safepoint_rank_()" , >est_regex, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 294, >est_dt)) { goto gtest_label_294; } if (gtest_dt != __null) { ::testing::internal::scoped_ptr< ::testing:: internal::DeathTest> gtest_dt_ptr(gtest_dt); switch (gtest_dt ->AssumeRole()) { case ::testing::internal::DeathTest::OVERSEE_TEST : if (!gtest_dt->Passed(::testing::ExitedWithCode(1)(gtest_dt ->Wait()))) { goto gtest_label_294; } break; case ::testing ::internal::DeathTest::EXECUTE_TEST: { ::testing::internal::DeathTest ::ReturnSentinel gtest_sentinel(gtest_dt); if (::testing::internal ::AlwaysTrue()) { child_MutexRank_monitor_overlapping_safepoint_rank_ (); }; gtest_dt->Abort(::testing::internal::DeathTest::TEST_DID_NOT_DIE ); break; } default: break; } } } else gtest_label_294: return ::testing::internal::AssertHelper(::testing::TestPartResult:: kFatalFailure, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 294, ::testing::internal::DeathTest::LastMessage()) = ::testing ::Message(); } void test_MutexRank_monitor_overlapping_safepoint_rank_ () |
| 294 | ".*Rank safepoint-40 overlaps with service-5")static void test_MutexRank_monitor_overlapping_safepoint_rank_ (); static void child_MutexRank_monitor_overlapping_safepoint_rank_ () { ::testing::FLAGS_gtest_throw_on_failure = true; test_MutexRank_monitor_overlapping_safepoint_rank_ (); exit(0); } class MutexRank_monitor_overlapping_safepoint_rank_vm_assert_Test : public ::testing::Test { public: MutexRank_monitor_overlapping_safepoint_rank_vm_assert_Test () {} private: virtual void TestBody(); static ::testing::TestInfo * const test_info_ __attribute__ ((unused)); MutexRank_monitor_overlapping_safepoint_rank_vm_assert_Test (MutexRank_monitor_overlapping_safepoint_rank_vm_assert_Test const &) = delete; void operator=(MutexRank_monitor_overlapping_safepoint_rank_vm_assert_Test const &) = delete;};::testing::TestInfo* const MutexRank_monitor_overlapping_safepoint_rank_vm_assert_Test ::test_info_ = ::testing::internal::MakeAndRegisterTestInfo( "MutexRank", "monitor_overlapping_safepoint_rank_vm_assert", __null, __null, ::testing::internal::CodeLocation("/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 294), (::testing::internal::GetTestTypeId()), ::testing::Test ::SetUpTestCase, ::testing::Test::TearDownTestCase, new ::testing ::internal::TestFactoryImpl< MutexRank_monitor_overlapping_safepoint_rank_vm_assert_Test >);void MutexRank_monitor_overlapping_safepoint_rank_vm_assert_Test ::TestBody() { switch (0) case 0: default: if (::testing::internal ::AlwaysTrue()) { const ::testing::internal::RE& gtest_regex = ("assert failed: " ".*Rank safepoint-40 overlaps with service-5" ); ::testing::internal::DeathTest* gtest_dt; if (!::testing:: internal::DeathTest::Create("child_MutexRank_monitor_overlapping_safepoint_rank_()" , >est_regex, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 294, >est_dt)) { goto gtest_label_294; } if (gtest_dt != __null) { ::testing::internal::scoped_ptr< ::testing:: internal::DeathTest> gtest_dt_ptr(gtest_dt); switch (gtest_dt ->AssumeRole()) { case ::testing::internal::DeathTest::OVERSEE_TEST : if (!gtest_dt->Passed(::testing::ExitedWithCode(1)(gtest_dt ->Wait()))) { goto gtest_label_294; } break; case ::testing ::internal::DeathTest::EXECUTE_TEST: { ::testing::internal::DeathTest ::ReturnSentinel gtest_sentinel(gtest_dt); if (::testing::internal ::AlwaysTrue()) { child_MutexRank_monitor_overlapping_safepoint_rank_ (); }; gtest_dt->Abort(::testing::internal::DeathTest::TEST_DID_NOT_DIE ); break; } default: break; } } } else gtest_label_294: return ::testing::internal::AssertHelper(::testing::TestPartResult:: kFatalFailure, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 294, ::testing::internal::DeathTest::LastMessage()) = ::testing ::Message(); } void test_MutexRank_monitor_overlapping_safepoint_rank_ () { |
| 295 | JavaThread* THREAD__the_thread__ = JavaThread::current(); |
| 296 | ThreadInVMfromNative invm(THREAD__the_thread__); |
| 297 | |
| 298 | Monitor* monitor_rank_broken = new Monitor(Mutex::safepoint-40, "monitor_rank_broken"); |
Value stored to 'monitor_rank_broken' during its initialization is never read | |
| 299 | } |
| 300 | |
| 301 | TEST_VM_ASSERT_MSG(MutexRank, monitor_overlapping_safepoint_rank2,static void test_MutexRank_monitor_overlapping_safepoint_rank2_ (); static void child_MutexRank_monitor_overlapping_safepoint_rank2_ () { ::testing::FLAGS_gtest_throw_on_failure = true; test_MutexRank_monitor_overlapping_safepoint_rank2_ (); exit(0); } class MutexRank_monitor_overlapping_safepoint_rank2_vm_assert_Test : public ::testing::Test { public: MutexRank_monitor_overlapping_safepoint_rank2_vm_assert_Test () {} private: virtual void TestBody(); static ::testing::TestInfo * const test_info_ __attribute__ ((unused)); MutexRank_monitor_overlapping_safepoint_rank2_vm_assert_Test (MutexRank_monitor_overlapping_safepoint_rank2_vm_assert_Test const &) = delete; void operator=(MutexRank_monitor_overlapping_safepoint_rank2_vm_assert_Test const &) = delete;};::testing::TestInfo* const MutexRank_monitor_overlapping_safepoint_rank2_vm_assert_Test ::test_info_ = ::testing::internal::MakeAndRegisterTestInfo( "MutexRank", "monitor_overlapping_safepoint_rank2_vm_assert" , __null, __null, ::testing::internal::CodeLocation("/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 302), (::testing::internal::GetTestTypeId()), ::testing::Test ::SetUpTestCase, ::testing::Test::TearDownTestCase, new ::testing ::internal::TestFactoryImpl< MutexRank_monitor_overlapping_safepoint_rank2_vm_assert_Test >);void MutexRank_monitor_overlapping_safepoint_rank2_vm_assert_Test ::TestBody() { switch (0) case 0: default: if (::testing::internal ::AlwaysTrue()) { const ::testing::internal::RE& gtest_regex = ("assert failed: " ".*Rank safepoint-1-39 overlaps with service-5" ); ::testing::internal::DeathTest* gtest_dt; if (!::testing:: internal::DeathTest::Create("child_MutexRank_monitor_overlapping_safepoint_rank2_()" , >est_regex, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 302, >est_dt)) { goto gtest_label_302; } if (gtest_dt != __null) { ::testing::internal::scoped_ptr< ::testing:: internal::DeathTest> gtest_dt_ptr(gtest_dt); switch (gtest_dt ->AssumeRole()) { case ::testing::internal::DeathTest::OVERSEE_TEST : if (!gtest_dt->Passed(::testing::ExitedWithCode(1)(gtest_dt ->Wait()))) { goto gtest_label_302; } break; case ::testing ::internal::DeathTest::EXECUTE_TEST: { ::testing::internal::DeathTest ::ReturnSentinel gtest_sentinel(gtest_dt); if (::testing::internal ::AlwaysTrue()) { child_MutexRank_monitor_overlapping_safepoint_rank2_ (); }; gtest_dt->Abort(::testing::internal::DeathTest::TEST_DID_NOT_DIE ); break; } default: break; } } } else gtest_label_302: return ::testing::internal::AssertHelper(::testing::TestPartResult:: kFatalFailure, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 302, ::testing::internal::DeathTest::LastMessage()) = ::testing ::Message(); } void test_MutexRank_monitor_overlapping_safepoint_rank2_ () |
| 302 | ".*Rank safepoint-1-39 overlaps with service-5")static void test_MutexRank_monitor_overlapping_safepoint_rank2_ (); static void child_MutexRank_monitor_overlapping_safepoint_rank2_ () { ::testing::FLAGS_gtest_throw_on_failure = true; test_MutexRank_monitor_overlapping_safepoint_rank2_ (); exit(0); } class MutexRank_monitor_overlapping_safepoint_rank2_vm_assert_Test : public ::testing::Test { public: MutexRank_monitor_overlapping_safepoint_rank2_vm_assert_Test () {} private: virtual void TestBody(); static ::testing::TestInfo * const test_info_ __attribute__ ((unused)); MutexRank_monitor_overlapping_safepoint_rank2_vm_assert_Test (MutexRank_monitor_overlapping_safepoint_rank2_vm_assert_Test const &) = delete; void operator=(MutexRank_monitor_overlapping_safepoint_rank2_vm_assert_Test const &) = delete;};::testing::TestInfo* const MutexRank_monitor_overlapping_safepoint_rank2_vm_assert_Test ::test_info_ = ::testing::internal::MakeAndRegisterTestInfo( "MutexRank", "monitor_overlapping_safepoint_rank2_vm_assert" , __null, __null, ::testing::internal::CodeLocation("/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 302), (::testing::internal::GetTestTypeId()), ::testing::Test ::SetUpTestCase, ::testing::Test::TearDownTestCase, new ::testing ::internal::TestFactoryImpl< MutexRank_monitor_overlapping_safepoint_rank2_vm_assert_Test >);void MutexRank_monitor_overlapping_safepoint_rank2_vm_assert_Test ::TestBody() { switch (0) case 0: default: if (::testing::internal ::AlwaysTrue()) { const ::testing::internal::RE& gtest_regex = ("assert failed: " ".*Rank safepoint-1-39 overlaps with service-5" ); ::testing::internal::DeathTest* gtest_dt; if (!::testing:: internal::DeathTest::Create("child_MutexRank_monitor_overlapping_safepoint_rank2_()" , >est_regex, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 302, >est_dt)) { goto gtest_label_302; } if (gtest_dt != __null) { ::testing::internal::scoped_ptr< ::testing:: internal::DeathTest> gtest_dt_ptr(gtest_dt); switch (gtest_dt ->AssumeRole()) { case ::testing::internal::DeathTest::OVERSEE_TEST : if (!gtest_dt->Passed(::testing::ExitedWithCode(1)(gtest_dt ->Wait()))) { goto gtest_label_302; } break; case ::testing ::internal::DeathTest::EXECUTE_TEST: { ::testing::internal::DeathTest ::ReturnSentinel gtest_sentinel(gtest_dt); if (::testing::internal ::AlwaysTrue()) { child_MutexRank_monitor_overlapping_safepoint_rank2_ (); }; gtest_dt->Abort(::testing::internal::DeathTest::TEST_DID_NOT_DIE ); break; } default: break; } } } else gtest_label_302: return ::testing::internal::AssertHelper(::testing::TestPartResult:: kFatalFailure, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 302, ::testing::internal::DeathTest::LastMessage()) = ::testing ::Message(); } void test_MutexRank_monitor_overlapping_safepoint_rank2_ () { |
| 303 | JavaThread* THREAD__the_thread__ = JavaThread::current(); |
| 304 | ThreadInVMfromNative invm(THREAD__the_thread__); |
| 305 | |
| 306 | Monitor* monitor_rank_ok = new Monitor(Mutex::safepoint-1, "monitor_rank_ok"); |
| 307 | Monitor* monitor_rank_broken = new Monitor(monitor_rank_ok->rank()-39, "monitor_rank_broken"); |
| 308 | } |
| 309 | |
| 310 | // Test mismatched safepoint check flag on lock declaration vs. lock acquisition. |
| 311 | TEST_VM_ASSERT_MSG(MutexSafepoint, always_check,static void test_MutexSafepoint_always_check_(); static void child_MutexSafepoint_always_check_ () { ::testing::FLAGS_gtest_throw_on_failure = true; test_MutexSafepoint_always_check_ (); exit(0); } class MutexSafepoint_always_check_vm_assert_Test : public ::testing::Test { public: MutexSafepoint_always_check_vm_assert_Test () {} private: virtual void TestBody(); static ::testing::TestInfo * const test_info_ __attribute__ ((unused)); MutexSafepoint_always_check_vm_assert_Test (MutexSafepoint_always_check_vm_assert_Test const &) = delete ; void operator=(MutexSafepoint_always_check_vm_assert_Test const &) = delete;};::testing::TestInfo* const MutexSafepoint_always_check_vm_assert_Test ::test_info_ = ::testing::internal::MakeAndRegisterTestInfo( "MutexSafepoint", "always_check_vm_assert", __null, __null, :: testing::internal::CodeLocation("/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 312), (::testing::internal::GetTestTypeId()), ::testing::Test ::SetUpTestCase, ::testing::Test::TearDownTestCase, new ::testing ::internal::TestFactoryImpl< MutexSafepoint_always_check_vm_assert_Test >);void MutexSafepoint_always_check_vm_assert_Test::TestBody () { switch (0) case 0: default: if (::testing::internal::AlwaysTrue ()) { const ::testing::internal::RE& gtest_regex = ("assert failed: " ".*This lock should always have a safepoint check for Java threads: SFPT_Test_lock" ); ::testing::internal::DeathTest* gtest_dt; if (!::testing:: internal::DeathTest::Create("child_MutexSafepoint_always_check_()" , >est_regex, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 312, >est_dt)) { goto gtest_label_312; } if (gtest_dt != __null) { ::testing::internal::scoped_ptr< ::testing:: internal::DeathTest> gtest_dt_ptr(gtest_dt); switch (gtest_dt ->AssumeRole()) { case ::testing::internal::DeathTest::OVERSEE_TEST : if (!gtest_dt->Passed(::testing::ExitedWithCode(1)(gtest_dt ->Wait()))) { goto gtest_label_312; } break; case ::testing ::internal::DeathTest::EXECUTE_TEST: { ::testing::internal::DeathTest ::ReturnSentinel gtest_sentinel(gtest_dt); if (::testing::internal ::AlwaysTrue()) { child_MutexSafepoint_always_check_(); }; gtest_dt ->Abort(::testing::internal::DeathTest::TEST_DID_NOT_DIE); break; } default: break; } } } else gtest_label_312: return :: testing::internal::AssertHelper(::testing::TestPartResult::kFatalFailure , "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 312, ::testing::internal::DeathTest::LastMessage()) = ::testing ::Message(); } void test_MutexSafepoint_always_check_() |
| 312 | ".*This lock should always have a safepoint check for Java threads: SFPT_Test_lock")static void test_MutexSafepoint_always_check_(); static void child_MutexSafepoint_always_check_ () { ::testing::FLAGS_gtest_throw_on_failure = true; test_MutexSafepoint_always_check_ (); exit(0); } class MutexSafepoint_always_check_vm_assert_Test : public ::testing::Test { public: MutexSafepoint_always_check_vm_assert_Test () {} private: virtual void TestBody(); static ::testing::TestInfo * const test_info_ __attribute__ ((unused)); MutexSafepoint_always_check_vm_assert_Test (MutexSafepoint_always_check_vm_assert_Test const &) = delete ; void operator=(MutexSafepoint_always_check_vm_assert_Test const &) = delete;};::testing::TestInfo* const MutexSafepoint_always_check_vm_assert_Test ::test_info_ = ::testing::internal::MakeAndRegisterTestInfo( "MutexSafepoint", "always_check_vm_assert", __null, __null, :: testing::internal::CodeLocation("/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 312), (::testing::internal::GetTestTypeId()), ::testing::Test ::SetUpTestCase, ::testing::Test::TearDownTestCase, new ::testing ::internal::TestFactoryImpl< MutexSafepoint_always_check_vm_assert_Test >);void MutexSafepoint_always_check_vm_assert_Test::TestBody () { switch (0) case 0: default: if (::testing::internal::AlwaysTrue ()) { const ::testing::internal::RE& gtest_regex = ("assert failed: " ".*This lock should always have a safepoint check for Java threads: SFPT_Test_lock" ); ::testing::internal::DeathTest* gtest_dt; if (!::testing:: internal::DeathTest::Create("child_MutexSafepoint_always_check_()" , >est_regex, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 312, >est_dt)) { goto gtest_label_312; } if (gtest_dt != __null) { ::testing::internal::scoped_ptr< ::testing:: internal::DeathTest> gtest_dt_ptr(gtest_dt); switch (gtest_dt ->AssumeRole()) { case ::testing::internal::DeathTest::OVERSEE_TEST : if (!gtest_dt->Passed(::testing::ExitedWithCode(1)(gtest_dt ->Wait()))) { goto gtest_label_312; } break; case ::testing ::internal::DeathTest::EXECUTE_TEST: { ::testing::internal::DeathTest ::ReturnSentinel gtest_sentinel(gtest_dt); if (::testing::internal ::AlwaysTrue()) { child_MutexSafepoint_always_check_(); }; gtest_dt ->Abort(::testing::internal::DeathTest::TEST_DID_NOT_DIE); break; } default: break; } } } else gtest_label_312: return :: testing::internal::AssertHelper(::testing::TestPartResult::kFatalFailure , "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 312, ::testing::internal::DeathTest::LastMessage()) = ::testing ::Message(); } void test_MutexSafepoint_always_check_() { |
| 313 | MutexLocker ml(new Mutex(Mutex::safepoint, "SFPT_Test_lock"), |
| 314 | Mutex::_no_safepoint_check_flag); |
| 315 | } |
| 316 | |
| 317 | TEST_VM_ASSERT_MSG(MutexSafepoint, never_check,static void test_MutexSafepoint_never_check_(); static void child_MutexSafepoint_never_check_ () { ::testing::FLAGS_gtest_throw_on_failure = true; test_MutexSafepoint_never_check_ (); exit(0); } class MutexSafepoint_never_check_vm_assert_Test : public ::testing::Test { public: MutexSafepoint_never_check_vm_assert_Test () {} private: virtual void TestBody(); static ::testing::TestInfo * const test_info_ __attribute__ ((unused)); MutexSafepoint_never_check_vm_assert_Test (MutexSafepoint_never_check_vm_assert_Test const &) = delete ; void operator=(MutexSafepoint_never_check_vm_assert_Test const &) = delete;};::testing::TestInfo* const MutexSafepoint_never_check_vm_assert_Test ::test_info_ = ::testing::internal::MakeAndRegisterTestInfo( "MutexSafepoint", "never_check_vm_assert", __null, __null, :: testing::internal::CodeLocation("/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 318), (::testing::internal::GetTestTypeId()), ::testing::Test ::SetUpTestCase, ::testing::Test::TearDownTestCase, new ::testing ::internal::TestFactoryImpl< MutexSafepoint_never_check_vm_assert_Test >);void MutexSafepoint_never_check_vm_assert_Test::TestBody () { switch (0) case 0: default: if (::testing::internal::AlwaysTrue ()) { const ::testing::internal::RE& gtest_regex = ("assert failed: " ".*This lock should not be taken with a safepoint check: SFPT_Test_lock" ); ::testing::internal::DeathTest* gtest_dt; if (!::testing:: internal::DeathTest::Create("child_MutexSafepoint_never_check_()" , >est_regex, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 318, >est_dt)) { goto gtest_label_318; } if (gtest_dt != __null) { ::testing::internal::scoped_ptr< ::testing:: internal::DeathTest> gtest_dt_ptr(gtest_dt); switch (gtest_dt ->AssumeRole()) { case ::testing::internal::DeathTest::OVERSEE_TEST : if (!gtest_dt->Passed(::testing::ExitedWithCode(1)(gtest_dt ->Wait()))) { goto gtest_label_318; } break; case ::testing ::internal::DeathTest::EXECUTE_TEST: { ::testing::internal::DeathTest ::ReturnSentinel gtest_sentinel(gtest_dt); if (::testing::internal ::AlwaysTrue()) { child_MutexSafepoint_never_check_(); }; gtest_dt ->Abort(::testing::internal::DeathTest::TEST_DID_NOT_DIE); break; } default: break; } } } else gtest_label_318: return :: testing::internal::AssertHelper(::testing::TestPartResult::kFatalFailure , "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 318, ::testing::internal::DeathTest::LastMessage()) = ::testing ::Message(); } void test_MutexSafepoint_never_check_() |
| 318 | ".*This lock should not be taken with a safepoint check: SFPT_Test_lock")static void test_MutexSafepoint_never_check_(); static void child_MutexSafepoint_never_check_ () { ::testing::FLAGS_gtest_throw_on_failure = true; test_MutexSafepoint_never_check_ (); exit(0); } class MutexSafepoint_never_check_vm_assert_Test : public ::testing::Test { public: MutexSafepoint_never_check_vm_assert_Test () {} private: virtual void TestBody(); static ::testing::TestInfo * const test_info_ __attribute__ ((unused)); MutexSafepoint_never_check_vm_assert_Test (MutexSafepoint_never_check_vm_assert_Test const &) = delete ; void operator=(MutexSafepoint_never_check_vm_assert_Test const &) = delete;};::testing::TestInfo* const MutexSafepoint_never_check_vm_assert_Test ::test_info_ = ::testing::internal::MakeAndRegisterTestInfo( "MutexSafepoint", "never_check_vm_assert", __null, __null, :: testing::internal::CodeLocation("/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 318), (::testing::internal::GetTestTypeId()), ::testing::Test ::SetUpTestCase, ::testing::Test::TearDownTestCase, new ::testing ::internal::TestFactoryImpl< MutexSafepoint_never_check_vm_assert_Test >);void MutexSafepoint_never_check_vm_assert_Test::TestBody () { switch (0) case 0: default: if (::testing::internal::AlwaysTrue ()) { const ::testing::internal::RE& gtest_regex = ("assert failed: " ".*This lock should not be taken with a safepoint check: SFPT_Test_lock" ); ::testing::internal::DeathTest* gtest_dt; if (!::testing:: internal::DeathTest::Create("child_MutexSafepoint_never_check_()" , >est_regex, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 318, >est_dt)) { goto gtest_label_318; } if (gtest_dt != __null) { ::testing::internal::scoped_ptr< ::testing:: internal::DeathTest> gtest_dt_ptr(gtest_dt); switch (gtest_dt ->AssumeRole()) { case ::testing::internal::DeathTest::OVERSEE_TEST : if (!gtest_dt->Passed(::testing::ExitedWithCode(1)(gtest_dt ->Wait()))) { goto gtest_label_318; } break; case ::testing ::internal::DeathTest::EXECUTE_TEST: { ::testing::internal::DeathTest ::ReturnSentinel gtest_sentinel(gtest_dt); if (::testing::internal ::AlwaysTrue()) { child_MutexSafepoint_never_check_(); }; gtest_dt ->Abort(::testing::internal::DeathTest::TEST_DID_NOT_DIE); break; } default: break; } } } else gtest_label_318: return :: testing::internal::AssertHelper(::testing::TestPartResult::kFatalFailure , "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 318, ::testing::internal::DeathTest::LastMessage()) = ::testing ::Message(); } void test_MutexSafepoint_never_check_() { |
| 319 | MutexLocker ml(new Mutex(Mutex::nosafepoint, "SFPT_Test_lock"), |
| 320 | Mutex::_safepoint_check_flag); |
| 321 | } |
| 322 | |
| 323 | TEST_VM_ASSERT_MSG(MutexSafepoint, possible_safepoint_lock,static void test_MutexSafepoint_possible_safepoint_lock_(); static void child_MutexSafepoint_possible_safepoint_lock_() { ::testing ::FLAGS_gtest_throw_on_failure = true; test_MutexSafepoint_possible_safepoint_lock_ (); exit(0); } class MutexSafepoint_possible_safepoint_lock_vm_assert_Test : public ::testing::Test { public: MutexSafepoint_possible_safepoint_lock_vm_assert_Test () {} private: virtual void TestBody(); static ::testing::TestInfo * const test_info_ __attribute__ ((unused)); MutexSafepoint_possible_safepoint_lock_vm_assert_Test (MutexSafepoint_possible_safepoint_lock_vm_assert_Test const & ) = delete; void operator=(MutexSafepoint_possible_safepoint_lock_vm_assert_Test const &) = delete;};::testing::TestInfo* const MutexSafepoint_possible_safepoint_lock_vm_assert_Test ::test_info_ = ::testing::internal::MakeAndRegisterTestInfo( "MutexSafepoint", "possible_safepoint_lock_vm_assert", __null , __null, ::testing::internal::CodeLocation("/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 324), (::testing::internal::GetTestTypeId()), ::testing::Test ::SetUpTestCase, ::testing::Test::TearDownTestCase, new ::testing ::internal::TestFactoryImpl< MutexSafepoint_possible_safepoint_lock_vm_assert_Test >);void MutexSafepoint_possible_safepoint_lock_vm_assert_Test ::TestBody() { switch (0) case 0: default: if (::testing::internal ::AlwaysTrue()) { const ::testing::internal::RE& gtest_regex = ("assert failed: " ".* Possible safepoint reached by thread that does not allow it" ); ::testing::internal::DeathTest* gtest_dt; if (!::testing:: internal::DeathTest::Create("child_MutexSafepoint_possible_safepoint_lock_()" , >est_regex, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 324, >est_dt)) { goto gtest_label_324; } if (gtest_dt != __null) { ::testing::internal::scoped_ptr< ::testing:: internal::DeathTest> gtest_dt_ptr(gtest_dt); switch (gtest_dt ->AssumeRole()) { case ::testing::internal::DeathTest::OVERSEE_TEST : if (!gtest_dt->Passed(::testing::ExitedWithCode(1)(gtest_dt ->Wait()))) { goto gtest_label_324; } break; case ::testing ::internal::DeathTest::EXECUTE_TEST: { ::testing::internal::DeathTest ::ReturnSentinel gtest_sentinel(gtest_dt); if (::testing::internal ::AlwaysTrue()) { child_MutexSafepoint_possible_safepoint_lock_ (); }; gtest_dt->Abort(::testing::internal::DeathTest::TEST_DID_NOT_DIE ); break; } default: break; } } } else gtest_label_324: return ::testing::internal::AssertHelper(::testing::TestPartResult:: kFatalFailure, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 324, ::testing::internal::DeathTest::LastMessage()) = ::testing ::Message(); } void test_MutexSafepoint_possible_safepoint_lock_ () |
| 324 | ".* Possible safepoint reached by thread that does not allow it")static void test_MutexSafepoint_possible_safepoint_lock_(); static void child_MutexSafepoint_possible_safepoint_lock_() { ::testing ::FLAGS_gtest_throw_on_failure = true; test_MutexSafepoint_possible_safepoint_lock_ (); exit(0); } class MutexSafepoint_possible_safepoint_lock_vm_assert_Test : public ::testing::Test { public: MutexSafepoint_possible_safepoint_lock_vm_assert_Test () {} private: virtual void TestBody(); static ::testing::TestInfo * const test_info_ __attribute__ ((unused)); MutexSafepoint_possible_safepoint_lock_vm_assert_Test (MutexSafepoint_possible_safepoint_lock_vm_assert_Test const & ) = delete; void operator=(MutexSafepoint_possible_safepoint_lock_vm_assert_Test const &) = delete;};::testing::TestInfo* const MutexSafepoint_possible_safepoint_lock_vm_assert_Test ::test_info_ = ::testing::internal::MakeAndRegisterTestInfo( "MutexSafepoint", "possible_safepoint_lock_vm_assert", __null , __null, ::testing::internal::CodeLocation("/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 324), (::testing::internal::GetTestTypeId()), ::testing::Test ::SetUpTestCase, ::testing::Test::TearDownTestCase, new ::testing ::internal::TestFactoryImpl< MutexSafepoint_possible_safepoint_lock_vm_assert_Test >);void MutexSafepoint_possible_safepoint_lock_vm_assert_Test ::TestBody() { switch (0) case 0: default: if (::testing::internal ::AlwaysTrue()) { const ::testing::internal::RE& gtest_regex = ("assert failed: " ".* Possible safepoint reached by thread that does not allow it" ); ::testing::internal::DeathTest* gtest_dt; if (!::testing:: internal::DeathTest::Create("child_MutexSafepoint_possible_safepoint_lock_()" , >est_regex, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 324, >est_dt)) { goto gtest_label_324; } if (gtest_dt != __null) { ::testing::internal::scoped_ptr< ::testing:: internal::DeathTest> gtest_dt_ptr(gtest_dt); switch (gtest_dt ->AssumeRole()) { case ::testing::internal::DeathTest::OVERSEE_TEST : if (!gtest_dt->Passed(::testing::ExitedWithCode(1)(gtest_dt ->Wait()))) { goto gtest_label_324; } break; case ::testing ::internal::DeathTest::EXECUTE_TEST: { ::testing::internal::DeathTest ::ReturnSentinel gtest_sentinel(gtest_dt); if (::testing::internal ::AlwaysTrue()) { child_MutexSafepoint_possible_safepoint_lock_ (); }; gtest_dt->Abort(::testing::internal::DeathTest::TEST_DID_NOT_DIE ); break; } default: break; } } } else gtest_label_324: return ::testing::internal::AssertHelper(::testing::TestPartResult:: kFatalFailure, "/home/daniel/Projects/java/jdk/test/hotspot/gtest/runtime/test_mutex.cpp" , 324, ::testing::internal::DeathTest::LastMessage()) = ::testing ::Message(); } void test_MutexSafepoint_possible_safepoint_lock_ () { |
| 325 | JavaThread* thread = JavaThread::current(); |
| 326 | ThreadInVMfromNative in_native(thread); |
| 327 | MutexLocker ml(new Mutex(Mutex::nosafepoint, "SpecialTest_lock"), |
| 328 | Mutex::_no_safepoint_check_flag); |
| 329 | thread->print_thread_state_on(tty); |
| 330 | // If the lock above succeeds, try to safepoint to test the NSV implied with this nosafepoint lock. |
| 331 | ThreadBlockInVM tbivm(thread); |
| 332 | thread->print_thread_state_on(tty); |
| 333 | } |
| 334 | #endif // ASSERT |