From c857f4a087e16539871f724647e1bed4c67645c0 Mon Sep 17 00:00:00 2001 From: Andreas Gampe Date: Thu, 25 Oct 2018 13:12:37 -0700 Subject: ART: Dump proc/maps on mem_map_test failure On any fatal failure, also dump the process maps to the log. Implemented through a gtest TestListener. Bug: 118408378 Test: m test-art-host Test: manual (add always-fail ASSERT) Change-Id: I05b1f19680f8ab020aea89e7429757833e307fd5 --- runtime/common_runtime_test.cc | 37 +++++++++++++++++++++++-------------- 1 file changed, 23 insertions(+), 14 deletions(-) (limited to 'runtime/common_runtime_test.cc') diff --git a/runtime/common_runtime_test.cc b/runtime/common_runtime_test.cc index be39631e44..cfc0d283d1 100644 --- a/runtime/common_runtime_test.cc +++ b/runtime/common_runtime_test.cc @@ -59,20 +59,6 @@ #include "thread.h" #include "well_known_classes.h" -int main(int argc, char **argv) { - // Gtests can be very noisy. For example, an executable with multiple tests will trigger native - // bridge warnings. The following line reduces the minimum log severity to ERROR and suppresses - // everything else. In case you want to see all messages, comment out the line. - setenv("ANDROID_LOG_TAGS", "*:e", 1); - - art::Locks::Init(); - art::InitLogging(argv, art::Runtime::Abort); - art::MemMap::Init(); - LOG(INFO) << "Running main() from common_runtime_test.cc..."; - testing::InitGoogleTest(&argc, argv); - return RUN_ALL_TESTS(); -} - namespace art { using android::base::StringPrintf; @@ -420,3 +406,26 @@ void CheckJniAbortCatcher::Hook(void* data, const std::string& reason) { } } // namespace art + +// Allow other test code to run global initialization/configuration before +// gtest infra takes over. +extern "C" +__attribute__((visibility("default"))) __attribute__((weak)) +void ArtTestGlobalInit() { + LOG(ERROR) << "ArtTestGlobalInit in common_runtime_test"; +} + +int main(int argc, char **argv) { + // Gtests can be very noisy. For example, an executable with multiple tests will trigger native + // bridge warnings. The following line reduces the minimum log severity to ERROR and suppresses + // everything else. In case you want to see all messages, comment out the line. + setenv("ANDROID_LOG_TAGS", "*:e", 1); + + art::Locks::Init(); + art::InitLogging(argv, art::Runtime::Abort); + art::MemMap::Init(); + LOG(INFO) << "Running main() from common_runtime_test.cc..."; + testing::InitGoogleTest(&argc, argv); + ArtTestGlobalInit(); + return RUN_ALL_TESTS(); +} -- cgit v1.2.3-59-g8ed1b