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

Commit 652c5ad5 authored by Christopher Tate's avatar Christopher Tate
Browse files

Fix job scheduler crash due to uninstall race

It's possible to get a PACKAGE_CHANGED broadcast well after the
package has actually been uninstalled outright because of broadcast
delivery latencies.  Understand the exception that might be thrown
when asking for package info in such cases, so we don't crash the
Android runtime.

Bug 31865735

Change-Id: I69b2678f0f724fc731aa48fed7af58ce60d3c21c
parent e8ebe112
Loading
Loading
Loading
Loading
+12 −1
Original line number Diff line number Diff line
@@ -429,7 +429,18 @@ public final class JobSchedulerService extends com.android.server.SystemService
                                        }
                                        cancelJobsForUid(pkgUid, true);
                                    }
                                } catch (RemoteException e) { /* cannot happen */ }
                                } catch (RemoteException|IllegalArgumentException e) {
                                    /*
                                     * IllegalArgumentException means that the package doesn't exist.
                                     * This arises when PACKAGE_CHANGED broadcast delivery has lagged
                                     * behind outright uninstall, so by the time we try to act it's gone.
                                     * We don't need to act on this PACKAGE_CHANGED when this happens;
                                     * we'll get a PACKAGE_REMOVED later and clean up then.
                                     *
                                     * RemoteException can't actually happen; the package manager is
                                     * running in this same process.
                                     */
                                }
                                break;
                            }
                        }