Always dump stacks if we're aborting.
In Bug:9285048 we don't see the stack of the offending thread as it is not
suspending. Break thread-safety by attempting to dump all threads when the
global aborting flag is raised.
Change-Id: Icb72642833e73ed4c06fa2771695fcd6d9899c78
diff --git a/src/thread.cc b/src/thread.cc
index c5bfb20..91f0d7b 100644
--- a/src/thread.cc
+++ b/src/thread.cc
@@ -865,9 +865,10 @@
// TODO: we call this code when dying but may not have suspended the thread ourself. The
// IsSuspended check is therefore racy with the use for dumping (normally we inhibit
// the race with the thread_suspend_count_lock_).
- if (this == Thread::Current() || IsSuspended()) {
+ bool dump_for_abort = (gAborting > 0);
+ if (this == Thread::Current() || IsSuspended() || dump_for_abort) {
// If we're currently in native code, dump that stack before dumping the managed stack.
- if (ShouldShowNativeStack(this)) {
+ if (dump_for_abort || ShouldShowNativeStack(this)) {
DumpKernelStack(os, GetTid(), " kernel: ", false);
DumpNativeStack(os, GetTid(), " native: ", false);
}