From 308753ce715f4596e9e913d852cc0786e0348fd4 Mon Sep 17 00:00:00 2001 From: Greg Alexander Date: Sun, 17 Jan 2021 22:35:13 -0500 Subject: [PATCH] Made a pass over all the crashes I've got from the play developer console. Made no headway on any of them, unfortunately. --- NOTES | 8 ++++++++ crash.20200109 | 55 +++++++++++++++++++++++++++++++++++++++++++++++++- crash.20200122 | 4 ++++ crash.20201123 | 23 +++++++++++++++++++++ crash.20201225 | 33 ++++++++++++++++++++++++++++++ doc/index.html | 4 ++++ 6 files changed, 126 insertions(+), 1 deletion(-) create mode 100644 crash.20201123 create mode 100644 crash.20201225 diff --git a/NOTES b/NOTES index 1b44584..91beabd 100644 --- a/NOTES +++ b/NOTES @@ -1303,6 +1303,8 @@ Also, it turns out to be trivial to honor the MY_PACKAGE_REPLACED (package upgrade) intent using the same receiver as BOOT_COMPLETED, which is going to be great for people going forward. +... + I have been banging on the problem people have reported with "Non-matching signing type." with older versions of OpenSSH. I've been told it's the OpenSSH 7.2p2 that ships stock with Ubuntu 16.04 and Mint @@ -1329,6 +1331,12 @@ sense from grepping around the dropbear source: So confusion between those two sounds likely to me. +... + +Triaged the crashes again. crash.20200109 is the only one that bothers +me. It will probably continue at a low incidence until I figure out +what's causing it. + XXX - crash.20200109 XXX - on android 6 (duckling moto g2), the notification is white-on-white? diff --git a/crash.20200109 b/crash.20200109 index 3874c18..4b4a905 100644 --- a/crash.20200109 +++ b/crash.20200109 @@ -2,7 +2,7 @@ Yesterday, 7:03 PM on app version 24 OnePlus OnePlus 7T (OnePlus7T), Android 10 Report 1 of 3 -android.app.RemoteServiceException: +android.app.RemoteServiceException: at android.app.ActivityThread$H.handleMessage (ActivityThread.java:2038) at android.os.Handler.dispatchMessage (Handler.java:107) at android.os.Looper.loop (Looper.java:214) @@ -10,3 +10,56 @@ android.app.RemoteServiceException: at java.lang.reflect.Method.invoke (Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:516) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:950) + + +2021/01/17 - confirmed this is still happening with version 26 of the +app, reported on Android 8.1 (SDK 27) and Android 10 (SDK 29). + +https://stackoverflow.com/questions/51222082/why-do-i-get-remoteserviceexception-for-creating-updating-a-notification +suggests it has something to do with the Notification passed to +startForeground(), but their "workaround" was to only modify the +Notification from the Service thread, which we already do. + +I could not reproduce it under the emulator with Android 8.1 and starting +the service is several different contexts, including using the START +broadcast after the app had been force stopped, or when the service had +started because the package had just been updated (UI not displayed yet). +I also tested launching the PendingIntent from those contexts. + +Looking at ActivityThread.java that came with my SDK and it looks like +RemoteServiceException() is just called whenever handleMessage() is +passed a msg.what == SCHEDULE_CRASH, which is sent from +ApplicationThread.scheduleCrash(), which is called (indirectly) from: + ActivityStackSupervisor.PendingActivityLaunch.sendErrorResult() + ... ultimately called when there's an exception during a + PendingIntent launch, with the string from that exception?? + BroadcastQueue.performReceiveLocked() on a RemoteException with the + string "can't deliver broadcast" + ActivityManagerShellCommand.runCrash() with "shell-induced crash" + ServiceRecord.postNotification() with "Bad notification for startForeground:" + ActiveServices.serviceForegroundCrash() with + "Context.startForegroundService() did not then call + Service.startForeground():" + NativeCrashListener.NativeCrashReporter.run() but I'm not sure it + actually makes it into the same crashApplication() or not? + RuntimeInit.wtf() not sure where this error winds up either but + +Most of those, I think, would be pretty good about putting a message +there so I'm not clear why no message is provided. + +Googling some more: + https://github.com/commons-app/apps-android-commons/issues/1877 + failed to set a NotificationChannel but I think I've already + crossed that bridge. + https://www.xspdf.com/resolution/50183960.html + the XML layout for their Notification specified a manual height for + the root element?? the outer element for mine is wrap_content, but + one of the contents is an ImageView with a manual size (60dp x + 60dp) ?? (and many others at this URL) Could maybe be a problem + with the res/drawable for the notification icon? + +Crashlytics would apparently provide more info -- I'm not clear why +Google's crash reporter isn't giving me the RemoteServiceException +message on its own though! But Crashlytics smells like bloatware to me +and from looking at the source (/usr/src/firebase-android-sdk), I didn't +immediately see how it could change the reporting of this sort of crash. diff --git a/crash.20200122 b/crash.20200122 index e68ecd5..9006357 100644 --- a/crash.20200122 +++ b/crash.20200122 @@ -7,3 +7,7 @@ pid: 0, tid: 0 >>> org.galexander.sshd <<< backtrace: #00 pc 000000000001a6ac /system/lib/libc.so (abort+63) #01 pc 0000000000020c79 /system/lib/libc.so (sigprocmask+48) + + +2021/01/17 - Looking at the play console today, this crash is not in the +last 60 days which is all it will show me. So I guess it's rare. diff --git a/crash.20201123 b/crash.20201123 new file mode 100644 index 0000000..3517347 --- /dev/null +++ b/crash.20201123 @@ -0,0 +1,23 @@ +java.lang.IllegalStateException: + at android.os.Parcel.createException (Parcel.java:1958) + at android.os.Parcel.readException (Parcel.java:1918) + at android.os.Parcel.readException (Parcel.java:1868) + at android.app.IActivityManager$Stub$Proxy.reportAssistContextExtras (IActivityManager.java:7107) + at android.app.ActivityThread.handleRequestAssistContextExtras (ActivityThread.java:3212) + at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1764) + at android.os.Handler.dispatchMessage (Handler.java:106) + at android.os.Looper.loop (Looper.java:193) + at android.app.ActivityThread.main (ActivityThread.java:6669) + at java.lang.reflect.Method.invoke (Native Method) + at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:493) + at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:858) +Caused by: android.os.RemoteException: + at android.app.ContextImpl.startServiceCommon (ContextImpl.java:1577) + at android.app.ContextImpl.startServiceAsUser (ContextImpl.java:1549) + at com.android.server.am.ActivityManagerService.reportAssistContextExtras (ActivityManagerService.java:14185) + at android.app.IActivityManager$Stub.onTransact$reportAssistContextExtras$ (IActivityManager.java:10882) + at android.app.IActivityManager$Stub.onTransact (IActivityManager.java:1953) + + +2021/01/17 - reported exactly once on an unknown Android 9 device with +version 24 of SimpleSSHD. A mystery I will leave unless it recurs. diff --git a/crash.20201225 b/crash.20201225 new file mode 100644 index 0000000..b57e548 --- /dev/null +++ b/crash.20201225 @@ -0,0 +1,33 @@ +java.lang.UnsatisfiedLinkError: + at java.lang.Runtime.loadLibrary0 (Runtime.java:1016) + at java.lang.System.loadLibrary (System.java:1669) + at org.galexander.sshd.SimpleSSHDService. (SimpleSSHDService.java:185) + at org.galexander.sshd.SimpleSSHDService.is_started (SimpleSSHDService.java:86) + at org.galexander.sshd.SimpleSSHD.update_startstop_prime (SimpleSSHD.java:107) + at org.galexander.sshd.SimpleSSHD.onResume (SimpleSSHD.java:49) + at android.app.Instrumentation.callActivityOnResume (Instrumentation.java:1412) + at android.app.Activity.performResume (Activity.java:7302) + at android.app.ActivityThread.performResumeActivity (ActivityThread.java:3776) + at android.app.ActivityThread.handleResumeActivity (ActivityThread.java:3816) + at android.app.servertransaction.ResumeActivityItem.execute (ResumeActivityItem.java:51) + at android.app.servertransaction.TransactionExecutor.executeLifecycleState (TransactionExecutor.java:145) + at android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:70) + at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1808) + at android.os.Handler.dispatchMessage (Handler.java:106) + at android.os.Looper.loop (Looper.java:193) + at android.app.ActivityThread.main (ActivityThread.java:6669) + at java.lang.reflect.Method.invoke (Native Method) + at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:518) + at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:858) + + +2021/01/17 - This has been reported from two different users, both on +OnePlus3 phone running Android 9. It was reported both with version 16 +and 24 of SimpleSSHD. It seems to be from where SimpleSSHDService tries +to load simplesshd-jni, which is the core JNI for the whole thing and the +only one that is linked in the normal way. It is a normal processor +(snapdragon 820). + +Since it's just the one kind of phone, I think I'm gonna ignore it. It's +probably some problem with how libc or JNI library is linked, but I can't +imagine what that problem is. diff --git a/doc/index.html b/doc/index.html index e41a5be..d364aa0 100644 --- a/doc/index.html +++ b/doc/index.html @@ -170,6 +170,10 @@ or later if Settings -> Foreground Service is enabled.

You may need to specify --user 0 depending on the context:

am broadcast --user 0 -a org.galexander.sshd.START org.galexander.sshd

+

And if Android is ignoring your broadcasts because the app was never started yet (or was force stopped), you may try (it's all arbitrary to me!): +

am broadcast --user 0 -a org.galexander.sshd.START org.galexander.sshd/.StartReceiver

+ +

If you are getting an error from am like:

cmd: Failure calling service activity: Failed transaction (2147483646)
it can probably be solved by disassociating am from the ssh