Firebase crash report contains stack trace with <OR>
I have an application in production and I use Firebase to log errors and crashes. Recently, I saw several lines in the exception stack trace, starting with <OR> . The following is an example taken directly (with the exception of the package name) from the exception specified by Firebase:
Exception java.lang.NullPointerException: Attempt to invoke interface method 'void com.mycompany.myapp.managers.b$af()' on a null object reference com.mycompany.myapp.managers.PermissionManager.getInstance (PermissionManager.java) <OR>.checkPermission (PermissionManager.java) <OR>.onRequestPermissionsResult (PermissionManager.java) com.mycompany.myapp.activities.ShareImageActivity.onSaveShare (ShareImageActivity.java) com.mycompany.myapp.activities.ShareImageActivity$3.onClick (ShareImageActivity.java) I know this is not a regular stack trace, since onRequestPermissionResults does not call checkPermission , and checkPermission does not call PermissionManager.getInstance . I assume this is one of the ways that Android tricks the stack trace for security, but I could not find any documentation on this. Does anyone know how to interpret a stack trace?
You see, this indicates that this failure reporting could not determine the actual object at this point. There is currently a known situation with the Deobfuscation Proguard where it can be ambiguous which object is the target here. This may be the case if you are stripping line numbers from your classes, and this is similar to what you are doing. This situation may improve if you can change your Proguard settings to remove line breaks.