am 6b96e2f0: Merge "Two REMOVE_PROVIDER messages caused by race condition."

* commit '6b96e2f0006b5c33973b3500d3bb72a8c7a3bd38':
  Two REMOVE_PROVIDER messages caused by race condition.
This commit is contained in:
Dianne Hackborn
2013-03-26 17:46:21 -07:00
committed by Android Git Automerger

View File

@@ -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) {