From deb6ed8c2e63fcb2a189ce6e0338f13edcb7c783 Mon Sep 17 00:00:00 2001 From: Jeff Brown Date: Tue, 10 Apr 2012 14:26:26 -0700 Subject: [PATCH] Don't reuse StringBuilder outside of lock when dumping ANR. The ANR dumping code was reusing the shared StringBuilder while not holding the ActivityManagerService lock. As a result, other threads could sweep in and clobber the ANR information. We don't want to hold the lock here, so just create a new StringBuilder. Change-Id: I0d91af55f5c123102cfab2cd97035491efed59c0 --- services/java/com/android/server/am/ActivityManagerService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/java/com/android/server/am/ActivityManagerService.java b/services/java/com/android/server/am/ActivityManagerService.java index 80e59cdda1ac1..42c42c92ccc84 100644 --- a/services/java/com/android/server/am/ActivityManagerService.java +++ b/services/java/com/android/server/am/ActivityManagerService.java @@ -3181,7 +3181,7 @@ public final class ActivityManagerService extends ActivityManagerNative } // Log the ANR to the main log. - StringBuilder info = mStringBuilder; + StringBuilder info = new StringBuilder(); info.setLength(0); info.append("ANR in ").append(app.processName); if (activity != null && activity.shortComponentName != null) {