diff options
-rw-r--r-- | runtime/gc/collector/concurrent_copying.cc | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/runtime/gc/collector/concurrent_copying.cc b/runtime/gc/collector/concurrent_copying.cc index 67383c4f36..b9118eca3f 100644 --- a/runtime/gc/collector/concurrent_copying.cc +++ b/runtime/gc/collector/concurrent_copying.cc @@ -954,15 +954,19 @@ void ConcurrentCopying::RemoveThreadMarkStackMapping(Thread* thread, } void ConcurrentCopying::AssertEmptyThreadMarkStackMap() { - if (!thread_mark_stack_map_.empty()) { - LOG(FATAL_WITHOUT_ABORT) << "thread_mark_stack_map not empty. size:" - << thread_mark_stack_map_.size() - << " Mappings:"; + std::ostringstream oss; + auto capture_mappings = [this, &oss] () REQUIRES(mark_stack_lock_) { for (const auto & iter : thread_mark_stack_map_) { - LOG(FATAL_WITHOUT_ABORT) << "thread:" << iter.first << " mark-stack:" << iter.second; + oss << "thread:" << iter.first << " mark-stack:" << iter.second << "\n"; } - LOG(FATAL) << "pooled_mark_stacks size:" << pooled_mark_stacks_.size(); - } + return oss.str(); + }; + CHECK(thread_mark_stack_map_.empty()) << "thread_mark_stack_map not empty. size:" + << thread_mark_stack_map_.size() + << "Mappings:\n" + << capture_mappings() + << "pooled_mark_stacks size:" + << pooled_mark_stacks_.size(); } void ConcurrentCopying::AssertNoThreadMarkStackMapping(Thread* thread) { |