Loading core/java/android/app/ActivityManager.java +1 −1 Original line number Diff line number Diff line Loading @@ -606,7 +606,7 @@ public class ActivityManager { public int uid; /** * The tag that was provided when the process crashed. * The activity name associated with the error, if known. May be null. */ public String tag; Loading core/java/android/app/ActivityManagerNative.java +29 −4 Original line number Diff line number Diff line Loading @@ -979,13 +979,23 @@ public abstract class ActivityManagerNative extends Binder implements IActivityM return true; } case HANDLE_APPLICATION_ERROR_TRANSACTION: { case HANDLE_APPLICATION_CRASH_TRANSACTION: { data.enforceInterface(IActivityManager.descriptor); IBinder app = data.readStrongBinder(); ApplicationErrorReport.CrashInfo ci = new ApplicationErrorReport.CrashInfo(data); handleApplicationCrash(app, ci); reply.writeNoException(); return true; } case HANDLE_APPLICATION_WTF_TRANSACTION: { data.enforceInterface(IActivityManager.descriptor); IBinder app = data.readStrongBinder(); String tag = data.readString(); ApplicationErrorReport.CrashInfo ci = new ApplicationErrorReport.CrashInfo(data); handleApplicationError(app, tag, ci); boolean res = handleApplicationWtf(app, tag, ci); reply.writeNoException(); reply.writeInt(res ? 1 : 0); return true; } Loading Loading @@ -2337,7 +2347,20 @@ class ActivityManagerProxy implements IActivityManager /* this base class version is never called */ return true; } public void handleApplicationError(IBinder app, String tag, public void handleApplicationCrash(IBinder app, ApplicationErrorReport.CrashInfo crashInfo) throws RemoteException { Parcel data = Parcel.obtain(); Parcel reply = Parcel.obtain(); data.writeInterfaceToken(IActivityManager.descriptor); data.writeStrongBinder(app); crashInfo.writeToParcel(data, 0); mRemote.transact(HANDLE_APPLICATION_CRASH_TRANSACTION, data, reply, 0); reply.readException(); reply.recycle(); data.recycle(); } public boolean handleApplicationWtf(IBinder app, String tag, ApplicationErrorReport.CrashInfo crashInfo) throws RemoteException { Parcel data = Parcel.obtain(); Loading @@ -2346,10 +2369,12 @@ class ActivityManagerProxy implements IActivityManager data.writeStrongBinder(app); data.writeString(tag); crashInfo.writeToParcel(data, 0); mRemote.transact(HANDLE_APPLICATION_ERROR_TRANSACTION, data, reply, 0); mRemote.transact(HANDLE_APPLICATION_WTF_TRANSACTION, data, reply, 0); reply.readException(); boolean res = reply.readInt() != 0; reply.recycle(); data.recycle(); return res; } public void signalPersistentProcesses(int sig) throws RemoteException { Loading core/java/android/app/ApplicationErrorReport.java +1 −0 Original line number Diff line number Diff line Loading @@ -195,6 +195,7 @@ public class ApplicationErrorReport implements Parcelable { StringWriter sw = new StringWriter(); tr.printStackTrace(new PrintWriter(sw)); stackTrace = sw.toString(); exceptionMessage = tr.getMessage(); // Populate fields with the "root cause" exception while (tr.getCause() != null) { Loading core/java/android/app/IActivityController.aidl +1 −1 Original line number Diff line number Diff line Loading @@ -44,7 +44,7 @@ interface IActivityController * it immediately. */ boolean appCrashed(String processName, int pid, String tag, String shortMsg, String longMsg, String shortMsg, String longMsg, long timeMillis, String stackTrace); /** Loading core/java/android/app/IActivityManager.java +5 −3 Original line number Diff line number Diff line Loading @@ -242,8 +242,9 @@ public interface IActivityManager extends IInterface { // Special low-level communication with activity manager. public void startRunning(String pkg, String cls, String action, String data) throws RemoteException; public void handleApplicationError(IBinder app, String tag, public void handleApplicationCrash(IBinder app, ApplicationErrorReport.CrashInfo crashInfo) throws RemoteException; public boolean handleApplicationWtf(IBinder app, String tag, ApplicationErrorReport.CrashInfo crashInfo) throws RemoteException; /* Loading Loading @@ -349,7 +350,7 @@ public interface IActivityManager extends IInterface { // Please keep these transaction codes the same -- they are also // sent by C++ code. int START_RUNNING_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION; int HANDLE_APPLICATION_ERROR_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+1; int HANDLE_APPLICATION_CRASH_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+1; int START_ACTIVITY_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+2; int UNHANDLED_BACK_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+3; int OPEN_CONTENT_URI_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+4; Loading Loading @@ -446,4 +447,5 @@ public interface IActivityManager extends IInterface { int KILL_APPLICATION_PROCESS_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+98; int START_ACTIVITY_INTENT_SENDER_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+99; int OVERRIDE_PENDING_TRANSITION_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+100; int HANDLE_APPLICATION_WTF_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+101; } Loading
core/java/android/app/ActivityManager.java +1 −1 Original line number Diff line number Diff line Loading @@ -606,7 +606,7 @@ public class ActivityManager { public int uid; /** * The tag that was provided when the process crashed. * The activity name associated with the error, if known. May be null. */ public String tag; Loading
core/java/android/app/ActivityManagerNative.java +29 −4 Original line number Diff line number Diff line Loading @@ -979,13 +979,23 @@ public abstract class ActivityManagerNative extends Binder implements IActivityM return true; } case HANDLE_APPLICATION_ERROR_TRANSACTION: { case HANDLE_APPLICATION_CRASH_TRANSACTION: { data.enforceInterface(IActivityManager.descriptor); IBinder app = data.readStrongBinder(); ApplicationErrorReport.CrashInfo ci = new ApplicationErrorReport.CrashInfo(data); handleApplicationCrash(app, ci); reply.writeNoException(); return true; } case HANDLE_APPLICATION_WTF_TRANSACTION: { data.enforceInterface(IActivityManager.descriptor); IBinder app = data.readStrongBinder(); String tag = data.readString(); ApplicationErrorReport.CrashInfo ci = new ApplicationErrorReport.CrashInfo(data); handleApplicationError(app, tag, ci); boolean res = handleApplicationWtf(app, tag, ci); reply.writeNoException(); reply.writeInt(res ? 1 : 0); return true; } Loading Loading @@ -2337,7 +2347,20 @@ class ActivityManagerProxy implements IActivityManager /* this base class version is never called */ return true; } public void handleApplicationError(IBinder app, String tag, public void handleApplicationCrash(IBinder app, ApplicationErrorReport.CrashInfo crashInfo) throws RemoteException { Parcel data = Parcel.obtain(); Parcel reply = Parcel.obtain(); data.writeInterfaceToken(IActivityManager.descriptor); data.writeStrongBinder(app); crashInfo.writeToParcel(data, 0); mRemote.transact(HANDLE_APPLICATION_CRASH_TRANSACTION, data, reply, 0); reply.readException(); reply.recycle(); data.recycle(); } public boolean handleApplicationWtf(IBinder app, String tag, ApplicationErrorReport.CrashInfo crashInfo) throws RemoteException { Parcel data = Parcel.obtain(); Loading @@ -2346,10 +2369,12 @@ class ActivityManagerProxy implements IActivityManager data.writeStrongBinder(app); data.writeString(tag); crashInfo.writeToParcel(data, 0); mRemote.transact(HANDLE_APPLICATION_ERROR_TRANSACTION, data, reply, 0); mRemote.transact(HANDLE_APPLICATION_WTF_TRANSACTION, data, reply, 0); reply.readException(); boolean res = reply.readInt() != 0; reply.recycle(); data.recycle(); return res; } public void signalPersistentProcesses(int sig) throws RemoteException { Loading
core/java/android/app/ApplicationErrorReport.java +1 −0 Original line number Diff line number Diff line Loading @@ -195,6 +195,7 @@ public class ApplicationErrorReport implements Parcelable { StringWriter sw = new StringWriter(); tr.printStackTrace(new PrintWriter(sw)); stackTrace = sw.toString(); exceptionMessage = tr.getMessage(); // Populate fields with the "root cause" exception while (tr.getCause() != null) { Loading
core/java/android/app/IActivityController.aidl +1 −1 Original line number Diff line number Diff line Loading @@ -44,7 +44,7 @@ interface IActivityController * it immediately. */ boolean appCrashed(String processName, int pid, String tag, String shortMsg, String longMsg, String shortMsg, String longMsg, long timeMillis, String stackTrace); /** Loading
core/java/android/app/IActivityManager.java +5 −3 Original line number Diff line number Diff line Loading @@ -242,8 +242,9 @@ public interface IActivityManager extends IInterface { // Special low-level communication with activity manager. public void startRunning(String pkg, String cls, String action, String data) throws RemoteException; public void handleApplicationError(IBinder app, String tag, public void handleApplicationCrash(IBinder app, ApplicationErrorReport.CrashInfo crashInfo) throws RemoteException; public boolean handleApplicationWtf(IBinder app, String tag, ApplicationErrorReport.CrashInfo crashInfo) throws RemoteException; /* Loading Loading @@ -349,7 +350,7 @@ public interface IActivityManager extends IInterface { // Please keep these transaction codes the same -- they are also // sent by C++ code. int START_RUNNING_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION; int HANDLE_APPLICATION_ERROR_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+1; int HANDLE_APPLICATION_CRASH_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+1; int START_ACTIVITY_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+2; int UNHANDLED_BACK_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+3; int OPEN_CONTENT_URI_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+4; Loading Loading @@ -446,4 +447,5 @@ public interface IActivityManager extends IInterface { int KILL_APPLICATION_PROCESS_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+98; int START_ACTIVITY_INTENT_SENDER_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+99; int OVERRIDE_PENDING_TRANSITION_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+100; int HANDLE_APPLICATION_WTF_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+101; }