Could crashlytics crash on Android?

2019-04-12 23:09发布

问题:

Here is an overview of a crash on fabric.io

  • java.lang.IllegalStateException - Fatal exception thrown on Scheduler.Worker thread
  • rx.exceptions.OnErrorFailedException - an exception originating somewhere in the depth of rx and ending in SafeSubscriber#_onError.
  • rx.exceptions.CompositeException - 2 exceptions occured
  • Casual chain - that's the interesting part

    Caused by rx.exceptions.CompositeException$CompositeExceptionCausalChain: Chain of Causes for CompositeException In Order Received =>
       at com.crashlytics.android.core.TrimmedThrowableData.<init>(TrimmedThrowableData.java:19)
       at com.crashlytics.android.core.TrimmedThrowableData.<init>(TrimmedThrowableData.java:20)
       at com.crashlytics.android.core.TrimmedThrowableData.<init>(TrimmedThrowableData.java:20)
       at com.crashlytics.android.core.CrashlyticsController.writeSessionEvent(CrashlyticsController.java:1090)
       at com.crashlytics.android.core.CrashlyticsController.writeFatal(CrashlyticsController.java:852)
       at com.crashlytics.android.core.CrashlyticsController.access$400(CrashlyticsController.java:59)
       at com.crashlytics.android.core.CrashlyticsController$6.call(CrashlyticsController.java:292)
       at com.crashlytics.android.core.CrashlyticsController$6.call(CrashlyticsController.java:285)
       at java.util.concurrent.FutureTask.run(FutureTask.java:237)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
       at io.fabric.sdk.android.services.common.ExecutorUtils$1$1.onRun(ExecutorUtils.java:75)
       at io.fabric.sdk.android.services.common.BackgroundPriorityRunnable.run(BackgroundPriorityRunnable.java:30)
       at java.lang.Thread.run(Thread.java:776)
    
  • retrofit.RetrofitError - 504 Gateway Timeout - probably supposed to be handled in one of the on onError

The version of Rx is 1.3.4. At first I thought that Rx missed the actual exception that occurred in one of the onError methods, but I found this issue https://github.com/ReactiveX/RxJava/issues/3679 and it seems to be resolved, by looking at source code of SafeSubscriber https://github.com/ReactiveX/RxJava/blob/1.x/src/main/java/rx/observers/SafeSubscriber.java it seems like rx should report the exception from onError correctly.

So, there is a CompositeException containing a retrofit exception, which is supposed to happen from time to time, and a stacktrace with references to crashlytics code with no references to any app code. I wonder what I should make out of this.