Broadcast ACTION_NETWORK_STATS_UPDATED in NetworkStatsHandler
There is a corner case which may cause the deadlock: When NetworkStatsService tried to broadcast the intent, NetworkStatsService was waiting for a lock which was hold by ActivityManagerService. In the same time, ActivityManagerService was waiting for ActiveService#startServiceInnerLocked() to get a lock which was hold by ConnectivityService. ConnectivityService was waiting for a lock which was hold by BatteryStatsImpl. BatteryStatsImpl was waiting for a lock which was hold by NetworkStatsService, and the lock was locked by NetworkStatsService when NetworkStatsService tried to broadcast the intent. To prevent deadlock when broadcasting the intent in performPollLocked(), move the intent broadcasting from performPollLocked() to NetworkStatsHandler. Bug: 150418178 Bug: 155155473 Test: 1. Create the second user and see if the device will do factory reset or not. 2. Factory reset manually and see if there is a deadlock. Change-Id: Icf88d3e7a38562ab15187f6c71bc8fb0486d37c0
Loading
Please register or sign in to comment