Analyze the existing logs and see from the crash dump logs that the error is reported by the systemui module, the specific error logs are as follows:
Cmdline: com.android.systemui
pid: 3329, tid: 3329, name: ndroid.systemui >>> com.android.systemui <<<
The summary in the log shows that the BinderDeathTracker of the BinderCacheManager was referenced 50133 times, and some of the other references combined exceeded the 51200 limit.
Summary:
50113 of android.telephony.BinderCacheManager$BinderDeathTracker (50113 unique instances)
adb log has a log printed frequently and found the isVowifiAvailable() method in MobileSignalController.java under the systemui module.
39645766 20.08.2022 23:15:03.992 Main 3329 3446 LogcatInfo NetworkController.MobileSignalController(1) isVowifiAvailable,mVoWiFiSettingEnabled = falsemMMtelVowifi = false
In the isVowifiAvailable() method, the BinderCacheManager is retrieved and the getBinder() method is called. getBinder() then initializes the BinderDeathTracker. isVowifiAvailable() method in MobileSignalController will be called frequently, causing the reference to BinderDeathTracker to slowly exceed the limit.
Before Modified:
try {
final ImsMmTelManager imsMmTelManager =
ImsMmTelManager.createForSubscriptionId(activeDataSubId);
// From CarrierConfig Settings
mVoWiFiSettingEnabled = imsMmTelManager.isVoWiFiSettingEnabled();
} catch (IllegalArgumentException exception) {
Log.w(mTag, "fail to get Wfc settings. subId=" + activeDataSubId, exception);
}
Modified:
ImsMmTelManager imsMmTelManager;
try {
imsMmTelManager =
ImsMmTelManager.createForSubscriptionId(activeDataSubId);
// From CarrierConfig Settings
mVoWiFiSettingEnabled = imsMmTelManager.isVoWiFiSettingEnabled();
} catch (IllegalArgumentException exception) {
Log.w(mTag, "fail to get Wfc settings. subId=" + activeDataSubId, exception);
} finaly {
imsMmTelManager = null;
}
Solution: Because this is a local variable, set it to a null value in time after use, and no longer reference the ImsMmTelManager.
Experience: You can view some repeated logs in the adb log, and check whether the code near the log directly or indirectly calls the classes or methods displayed in the Summary.
Read More:
- Global lock, table lock and row lock in MySQL
- Python global variables and global keywords
- Error: global variable is ambiguous (conflict between using namespace STD and global variable)
- Insufficient table space ORA-00604 unable to extend table SYS.AUD by 8192
- 1093 – You can’t specify target table ‘table’ for update in FROM clause
- Error 1146 (42s02): table ‘database name. Table name’ doesn’t exist ‘
- Error c2951: template declaration can only be used at the global, namespace, or class scope. Error c2598: link specification must be at the global scope
- (element UI component table) how to add a style to a table
- Maven global configuration
- Errors in IntelliJ ieeasql statements and table names in @ table
- An error occurred when opensips started the service“ ERROR:core :db_ check_ table_ Version: invalid version 7 for Table dialog found “
- Oci-22053: overflow error problem
- Differences between Java stack overflow ror and outofmemoryerror
- Using global timing task cronutil in hutool tool class
- Vue element admin configure global styles
- “Error! Reference source not found.” “error! Reference source not found solution to problem for
- How to Fix stack overflow error
- Develop a Boolean equation for overflow detection
- Error running Eclipse: failed to load the JNI shared library
- AWS appasync error global.TYPE.xx