Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 931ee98c authored by Brad Fitzpatrick's avatar Brad Fitzpatrick Committed by Android Git Automerger
Browse files

am b7304593: Merge "Cap the size of StrictMode buffering we do before calling...

am b7304593: Merge "Cap the size of StrictMode buffering we do before calling DropBox." into gingerbread

Merge commit 'b7304593' into gingerbread-plus-aosp

* commit 'b7304593':
  Cap the size of StrictMode buffering we do before calling DropBox.
parents cb61d132 b7304593
Loading
Loading
Loading
Loading
+25 −10
Original line number Diff line number Diff line
@@ -6173,7 +6173,7 @@ public final class ActivityManagerService extends ActivityManagerNative implemen
        if (dbox == null || !dbox.isTagEnabled(dropboxTag)) return;

        boolean bufferWasEmpty;

        boolean needsFlush;
        final StringBuilder sb = isSystemApp ? mStrictModeBuffer : new StringBuilder(1024);
        synchronized (sb) {
            bufferWasEmpty = sb.length() == 0;
@@ -6188,18 +6188,32 @@ public final class ActivityManagerService extends ActivityManagerNative implemen
                sb.append(crashInfo.stackTrace);
            }
            sb.append("\n");

            // Only buffer up to ~64k.  Various logging bits truncate
            // things at 128k.
            needsFlush = (sb.length() > 64 * 1024);
        }

        // Non-system apps are isolated with a different tag & policy.
        // They're also not batched.  Batching is useful during system
        // boot with strict system-wide logging policies and lots of
        // things firing, but not common with regular apps, which
        // won't ship with StrictMode dropboxing enabled.
        if (!isSystemApp) {
        // Flush immediately if the buffer's grown too large, or this
        // is a non-system app.  Non-system apps are isolated with a
        // different tag & policy and not batched.
        //
        // Batching is useful during internal testing with
        // StrictMode settings turned up high.  Without batching,
        // thousands of separate files could be created on boot.
        if (!isSystemApp || needsFlush) {
            new Thread("Error dump: " + dropboxTag) {
                @Override
                public void run() {
                    dbox.addText(dropboxTag, sb.toString());
                    String report;
                    synchronized (sb) {
                        report = sb.toString();
                        sb.delete(0, sb.length());
                        sb.trimToSize();
                    }
                    if (report.length() != 0) {
                        dbox.addText(dropboxTag, report);
                    }
                }
            }.start();
            return;
@@ -6207,8 +6221,9 @@ public final class ActivityManagerService extends ActivityManagerNative implemen

        // System app batching:
        if (!bufferWasEmpty) {
            // An existing dropbox-writing thread is outstanding and
            // will handle it.
            // An existing dropbox-writing thread is outstanding, so
            // we don't need to start it up.  The existing thread will
            // catch the buffer appends we just did.
            return;
        }