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

Commit 0b5e0da8 authored by Dianne Hackborn's avatar Dianne Hackborn Committed by Android Git Automerger
Browse files

am 4ad5e888: am 0f92dde3: am ae7b22d6: Merge "Fix issue #10901205: Shouldn\'t...

am 4ad5e888: am 0f92dde3: am ae7b22d6: Merge "Fix issue #10901205: Shouldn\'t send broadcasts (or try to bind services, etc.)..." into klp-dev

* commit '4ad5e888':
  Fix issue #10901205: Shouldn't send broadcasts (or try to bind services, etc.)...
parents b0215287 4ad5e888
Loading
Loading
Loading
Loading
+11 −7
Original line number Diff line number Diff line
@@ -470,6 +470,12 @@ public final class BroadcastQueue {
                    r.callingPid, r.resolvedType, filter.receiverList.uid);
        }

        if (filter.receiverList.app == null || filter.receiverList.app.crashing) {
            Slog.w(TAG, "Skipping deliver [" + mQueueName + "] " + r
                    + " to " + filter.receiverList + ": process crashing");
            skip = true;
        }

        if (!skip) {
            // If this is not being sent as an ordered broadcast, then we
            // don't want to touch the fields that keep track of the current
@@ -565,8 +571,8 @@ public final class BroadcastQueue {

                boolean isDead;
                synchronized (mService.mPidsSelfLocked) {
                    isDead = (mService.mPidsSelfLocked.get(
                            mPendingBroadcast.curApp.pid) == null);
                    ProcessRecord proc = mService.mPidsSelfLocked.get(mPendingBroadcast.curApp.pid);
                    isDead = proc == null || proc.crashing;
                }
                if (!isDead) {
                    // It's still alive, so keep waiting
@@ -650,7 +656,7 @@ public final class BroadcastQueue {
                                new Intent(r.intent), r.resultCode,
                                r.resultData, r.resultExtras, false, false, r.userId);
                            // Set this to null so that the reference
                            // (local and remote) isnt kept in the mBroadcastHistory.
                            // (local and remote) isn't kept in the mBroadcastHistory.
                            r.resultTo = null;
                        } catch (RemoteException e) {
                            Slog.w(TAG, "Failure ["
@@ -803,10 +809,8 @@ public final class BroadcastQueue {
            }
            if (r.curApp != null && r.curApp.crashing) {
                // If the target process is crashing, just skip it.
                if (DEBUG_BROADCAST)  Slog.v(TAG,
                        "Skipping deliver ordered ["
                        + mQueueName + "] " + r + " to " + r.curApp
                        + ": process crashing");
                Slog.w(TAG, "Skipping deliver ordered [" + mQueueName + "] " + r
                        + " to " + r.curApp + ": process crashing");
                skip = true;
            }

+1 −1
Original line number Diff line number Diff line
@@ -98,7 +98,7 @@ final class ProcessRecord {
    boolean bad;                // True if disabled in the bad process list
    boolean killedByAm;         // True when proc has been killed by activity manager, not for RAM
    boolean procStateChanged;   // Keep track of whether we changed 'setAdj'.
    String waitingToKill;       // Process is waiting to be killed when in the bg; reason
    String waitingToKill;       // Process is waiting to be killed when in the bg, and reason
    IBinder forcingToForeground;// Token that is forcing this process to be foreground
    int adjSeq;                 // Sequence id for identifying oom_adj assignment cycles
    int lruSeq;                 // Sequence id for identifying LRU update cycles