diff options
author | Craig Mautner <cmautner@google.com> | 2015-01-13 04:08:03 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2015-01-13 04:08:05 +0000 |
commit | 66b4d48469c74f7dd889f3f685b436fcb957bf16 (patch) | |
tree | 10d62786b666e015f084c8d6dbb703153eaed3b2 /core/java/android/app | |
parent | 595ae39f7f484eb5d2d9e21feeff7e97114b744a (diff) | |
parent | 1d6c40a6698d271517e5b333f2d0dd4459913884 (diff) | |
download | frameworks_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.java | 19 |
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); } |