fix misleading FATAL EXCEPTION IN SYSTEM PROCESS log
There will be the following situations about mApplicationObject: 1) fork app process will invoke ActivityThread.main(), then set mApplicationObject. 2) fork system_server, don't set mApplicationObject value. 3) using app_process fork process except zygote, will inovke RuntimeInit, don't set mApplicationObject value。 For example using command as below: app_process /system/bin com.android.commands.am.Am "$@", if this process throw uncaught exception,will output FATAL EXCEPTION IN SYSTEM PROCESS log, it's not in system process but in normal process。 so should add condition: Process.SYSTEM_UID == Process.myUid() BUG: 72759350 Test: manual Change-Id: Ie8d769e4149cd9b938577058de871c4f8db9efe5 Signed-off-by: yuanhuihui <yuanhuihui@xiaomi.com>
This commit is contained in:
committed by
Anton Hansson
parent
a869d14343
commit
e669ac2520
@@ -71,10 +71,11 @@ public class RuntimeInit {
|
||||
public void uncaughtException(Thread t, Throwable e) {
|
||||
// Don't re-enter if KillApplicationHandler has already run
|
||||
if (mCrashing) return;
|
||||
if (mApplicationObject == null) {
|
||||
// The "FATAL EXCEPTION" string is still used on Android even though
|
||||
// apps can set a custom UncaughtExceptionHandler that renders uncaught
|
||||
// exceptions non-fatal.
|
||||
|
||||
// mApplicationObject is null for non-zygote java programs (e.g. "am")
|
||||
// There are also apps running with the system UID. We don't want the
|
||||
// first clause in either of these two cases, only for system_server.
|
||||
if (mApplicationObject == null && (Process.SYSTEM_UID == Process.myUid())) {
|
||||
Clog_e(TAG, "*** FATAL EXCEPTION IN SYSTEM PROCESS: " + t.getName(), e);
|
||||
} else {
|
||||
StringBuilder message = new StringBuilder();
|
||||
|
||||
Reference in New Issue
Block a user