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

Commit 6b96e2f0 authored by Dianne Hackborn's avatar Dianne Hackborn Committed by Gerrit Code Review
Browse files

Merge "Two REMOVE_PROVIDER messages caused by race condition."

parents 083bfa5a 9e3e5266
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -4492,6 +4492,8 @@ public final class ActivityThread {
                                + "snatched provider from the jaws of death");
                    }
                    prc.removePending = false;
                    // There is a race! It fails to remove the message, which
                    // will be handled in completeRemoveProvider().
                    mH.removeMessages(H.REMOVE_PROVIDER, prc);
                } else {
                    unstableDelta = 0;
@@ -4671,6 +4673,11 @@ public final class ActivityThread {
                return;
            }

            // More complicated race!! Some client managed to acquire the
            // provider and release it before the removal was completed.
            // Continue the removal, and abort the next remove message.
            prc.removePending = false;

            final IBinder jBinder = prc.holder.provider.asBinder();
            ProviderRefCount existingPrc = mProviderRefCountMap.get(jBinder);
            if (existingPrc == prc) {