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

Commit c5510138 authored by Makoto Onuki's avatar Makoto Onuki
Browse files

Enhance provider timeout error message

Bug: 118839305
Bug: 110030490
Test: Manual test with setting "timeout" to true.

Change-Id: Ie433bc244a64ba5457dc92c990e27c02ce15122b
parent 8c12dcd1
Loading
Loading
Loading
Loading
+23 −7
Original line number Diff line number Diff line
@@ -6490,6 +6490,7 @@ public class ActivityManagerService extends IActivityManager.Stub
        // Wait for the provider to be published...
        final long timeout = SystemClock.uptimeMillis() + CONTENT_PROVIDER_WAIT_TIMEOUT;
        boolean timedOut = false;
        synchronized (cpr) {
            while (cpr.provider == null) {
                if (cpr.launchingApp == null) {
@@ -6513,12 +6514,8 @@ public class ActivityManagerService extends IActivityManager.Stub
                    }
                    cpr.wait(wait);
                    if (cpr.provider == null) {
                        Slog.wtf(TAG, "Timeout waiting for provider "
                                + cpi.applicationInfo.packageName + "/"
                                + cpi.applicationInfo.uid + " for provider "
                                + name
                                + " providerRunning=" + providerRunning);
                        return null;
                        timedOut = true;
                        break;
                    }
                } catch (InterruptedException ex) {
                } finally {
@@ -6528,7 +6525,26 @@ public class ActivityManagerService extends IActivityManager.Stub
                }
            }
        }
        return cpr != null ? cpr.newHolder(conn) : null;
        if (timedOut) {
            // Note we do it afer releasing the lock.
            String callerName = "unknown";
            synchronized (this) {
                final ProcessRecord record = mProcessList.getLRURecordForAppLocked(caller);
                if (record != null) {
                    callerName = record.processName;
                }
            }
            Slog.wtf(TAG, "Timeout waiting for provider "
                    + cpi.applicationInfo.packageName + "/"
                    + cpi.applicationInfo.uid + " for provider "
                    + name
                    + " providerRunning=" + providerRunning
                    + " caller=" + callerName + "/" + Binder.getCallingUid());
            return null;
        }
        return cpr.newHolder(conn);
    }
    private static final class StartActivityRunnable implements Runnable {