summaryrefslogtreecommitdiffstats
path: root/core/java/android/app
diff options
context:
space:
mode:
authorCraig Mautner <cmautner@google.com>2015-01-13 04:08:03 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2015-01-13 04:08:05 +0000
commit66b4d48469c74f7dd889f3f685b436fcb957bf16 (patch)
tree10d62786b666e015f084c8d6dbb703153eaed3b2 /core/java/android/app
parent595ae39f7f484eb5d2d9e21feeff7e97114b744a (diff)
parent1d6c40a6698d271517e5b333f2d0dd4459913884 (diff)
downloadframeworks_base-66b4d48469c74f7dd889f3f685b436fcb957bf16.zip
frameworks_base-66b4d48469c74f7dd889f3f685b436fcb957bf16.tar.gz
frameworks_base-66b4d48469c74f7dd889f3f685b436fcb957bf16.tar.bz2
Merge "Prevent system server dump stuck by pipe buffer full."
Diffstat (limited to 'core/java/android/app')
-rw-r--r--core/java/android/app/ActivityThread.java19
1 files changed, 17 insertions, 2 deletions
diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java
index f15a1e0..d70f6ef 100644
--- a/core/java/android/app/ActivityThread.java
+++ b/core/java/android/app/ActivityThread.java
@@ -1061,8 +1061,7 @@ public final class ActivityThread {
WindowManagerGlobal.getInstance().dumpGfxInfo(fd);
}
- @Override
- public void dumpDbInfo(FileDescriptor fd, String[] args) {
+ private void dumpDatabaseInfo(FileDescriptor fd, String[] args) {
PrintWriter pw = new FastPrintWriter(new FileOutputStream(fd));
PrintWriterPrinter printer = new PrintWriterPrinter(pw);
SQLiteDebug.dump(printer, args);
@@ -1070,6 +1069,22 @@ public final class ActivityThread {
}
@Override
+ public void dumpDbInfo(final FileDescriptor fd, final String[] args) {
+ if (mSystemThread) {
+ // Ensure this invocation is asynchronous to prevent
+ // writer waiting due to buffer cannot be consumed.
+ AsyncTask.THREAD_POOL_EXECUTOR.execute(new Runnable() {
+ @Override
+ public void run() {
+ dumpDatabaseInfo(fd, args);
+ }
+ });
+ } else {
+ dumpDatabaseInfo(fd, args);
+ }
+ }
+
+ @Override
public void unstableProviderDied(IBinder provider) {
sendMessage(H.UNSTABLE_PROVIDER_DIED, provider);
}