Here is an overview of a crash on fabric.io
java.lang.IllegalStateException
- Fatal exception thrown on Scheduler.Worker threadrx.exceptions.OnErrorFailedException
- an exception originating somewhere in the depth of rx and ending inSafeSubscriber#_onError
.rx.exceptions.CompositeException
- 2 exceptions occuredCasual 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 ononError
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.