RxJava 2.x extension to provide meaningful Stack Traces

Overview

RxJava2Debug Tweet

License Maven Jcenter Arsenal Methods

A library to make StackTraces involving RxJava2 more meaningful (they will always point to your code!).

Rationale

If you use RxJava2, you know the pain of debugging exceptions generated somwhere across the stream, in another thread, in a nested stream, ... The StackTrace provided by RxJava2 will tell you almost nothing. Even more, if you are using systems like Crashlytics to collect reports for and Android app, most RxJava-related crashes will be reported as a single error instance (omg, no way to fix that).

This library was created from the need to debug such situations when they happen in Android apps; even more, I needed to have a clear and precise report in Crashlytics for each distinct exception.

  1. If you handle exceptions generated in RxJava2 streams, you can query RxJava2Debug to obtain an extended StackTrace pointing to the exact line of code that created the issue.

  2. If you let exceptions generated in RxJava2 streams crash your app, RxJava2Debug will automatically extend the default StackTrace.

  3. If you let exceptions generated in RxJava2 streams crash your app and you configure RxJava2Debug with your package-names, RxJava2Debug will make sure you get unique reports for each issue (to Crashlytics, or whichever reporting system you use).

Installation

Using Maven Central :

repositories {
    mavenCentral()
}

dependencies {
    compile 'com.akaita.java:rxjava2-debug:1.4.0'
}

Using JCenter:

repositories {
    jcenter()
}

dependencies {
    compile 'com.akaita.java:rxjava2-debug:1.4.0'
}

Compatibility

RxJava2Debug 1.3.0+: RxJava 2.2.1+

RxJava2Debug 1.2.2: RxJava 2.1.0 to 2.2.0

Usage

Just enable RxJava2Debug as soon as possible. In Android, for example:

public class MyApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        
        Fabric.with(this, new Crashlytics());
        
        // Enable RxJava assembly stack collection, to make RxJava crash reports clear and unique
        // Make sure this is called AFTER setting up any Crash reporting mechanism as Crashlytics
        RxJava2Debug.enableRxJava2AssemblyTracking(new String[]{"com.example.myapp", "com.example.mylibrary"});
    }
}

This will:

  • Enhance stack traces of all RxJava2-related crashes making sure they contain a reference to the method that generated the first event in the Rx pipeline
  • Make sure that Stack Traces contain a reference to your code (some class in com.example.myapp or com.example.mylibrary)
  • Make sure that crash reports in Crashlytics are actually different for each pipeline (avoid bundling every RXJava error into one reports)

You will now also be able to obtain an enhanced Stack Trace even when you implement onError (really, you should implement it):

responseSubject
    .subscribe(
        responseObservable -> handleResponse(responseObservable),
        throwable -> RxJava2Debug.getEnhancedStackTrace(throwable)
    );
Without RxJava2Debug With RxJava2Debug
raw stack trace enhanced stack trace
raw crash report enhanced crash report

API

Start collecting information about RxJava's execution to provide a more meaningful StackTrace in case of crash
Beware: Any crash-reporting handler should be set up before calling this method

void enableRxJava2AssemblyTracking()

Start collecting filtered information about RxJava's execution to provide a more meaningful StackTrace in case of crash
Beware: Any crash-reporting handler should be set up before calling this method

void enableRxJava2AssemblyTracking(@Nullable String[] basePackageNames)

Disable the collection of more information about RxJava's execution
Information collected before calling this method will still be reported

void disableRxJava2AssemblyTracking()

Obtain a copy of the original Throwable with an extended StackTrace

@Nullable Throwable getEnhancedStackTrace(Throwable originalException)

Features

StackTrace generation

Regardless of the thread a crash happens in, a nice StackTrace referring to the origin of the RxJava2 pipeline will be added to the causes of the crash.

Config:

RxJava2Debug.enableRxJava2AssemblyTracking();

Example (pointing to my own faulty code in com.akaita.fgas.activities.TopActivity.onResume(TopActivity.java:205)):

FATAL EXCEPTION: main
Process: com.akaita.fgas.debug, PID: 22538
java.lang.Throwable: The mapper function returned a null value.
   at io.reactivex.internal.functions.ObjectHelper.requireNonNull(ObjectHelper.java:39)
   at io.reactivex.internal.operators.observable.ObservableMap$MapObserver.onNext(ObservableMap.java:59)
   at hu.akarnokd.rxjava2.debug.ObservableOnAssembly$OnAssemblyObserver.onNext(ObservableOnAssembly.java:55)
   at io.reactivex.internal.operators.observable.ObservableSubscribeOn$SubscribeOnObserver.onNext(ObservableSubscribeOn.java:58)
   at hu.akarnokd.rxjava2.debug.ObservableOnAssembly$OnAssemblyObserver.onNext(ObservableOnAssembly.java:55)
   at io.reactivex.internal.operators.observable.ObservableScalarXMap$ScalarDisposable.run(ObservableScalarXMap.java:248)
   at io.reactivex.internal.operators.observable.ObservableJust.subscribeActual(ObservableJust.java:35)
   at io.reactivex.Observable.subscribe(Observable.java:10838)
   at hu.akarnokd.rxjava2.debug.ObservableOnAssemblyScalarCallable.subscribeActual(ObservableOnAssemblyScalarCallable.java:41)
   at io.reactivex.Observable.subscribe(Observable.java:10838)
   at io.reactivex.internal.operators.observable.ObservableSubscribeOn$SubscribeTask.run(ObservableSubscribeOn.java:96)
   at io.reactivex.Scheduler$DisposeTask.run(Scheduler.java:452)
   at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:61)
   at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:52)
   at java.util.concurrent.FutureTask.run(FutureTask.java:237)
   at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:272)
   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
   at java.lang.Thread.run(Thread.java:761)
Caused by: caused by java.lang.NullPointerException: The mapper function returned a null value.
   at io.reactivex.internal.functions.ObjectHelper.requireNonNull(ObjectHelper.java:39)
   at com.akaita.fgas.activities.TopActivity.onResume(TopActivity.java:205)
   at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1269)
   at android.app.Activity.performResume(Activity.java:6766)
   at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3377)
   at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3440)
   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2713)
   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460)
   at android.os.Handler.dispatchMessage(Handler.java:102)
   at android.os.Looper.loop(Looper.java:154)
   at android.app.ActivityThread.main(ActivityThread.java:6077)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)

Instead of the obscure:

FATAL EXCEPTION: main
Process: com.akaita.fgas.debug, PID: 27300
io.reactivex.exceptions.OnErrorNotImplementedException: The mapper function returned a null value.
   at io.reactivex.internal.functions.Functions$OnErrorMissingConsumer.accept(Functions.java:704)
   at io.reactivex.internal.functions.Functions$OnErrorMissingConsumer.accept(Functions.java:701)
   at io.reactivex.internal.observers.LambdaObserver.onError(LambdaObserver.java:74)
   at io.reactivex.internal.operators.observable.ObservableObserveOn$ObserveOnObserver.checkTerminated(ObservableObserveOn.java:276)
   at io.reactivex.internal.operators.observable.ObservableObserveOn$ObserveOnObserver.drainNormal(ObservableObserveOn.java:172)
   at io.reactivex.internal.operators.observable.ObservableObserveOn$ObserveOnObserver.run(ObservableObserveOn.java:252)
   at io.reactivex.android.schedulers.HandlerScheduler$ScheduledRunnable.run(HandlerScheduler.java:109)
   at android.os.Handler.handleCallback(Handler.java:751)
   at android.os.Handler.dispatchMessage(Handler.java:95)
   at android.os.Looper.loop(Looper.java:154)
   at android.app.ActivityThread.main(ActivityThread.java:6077)
   at java.lang.reflect.Method.invoke(Native Method)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)
Caused by: java.lang.NullPointerException: The mapper function returned a null value.
   at io.reactivex.internal.functions.ObjectHelper.requireNonNull(ObjectHelper.java:39)
   at io.reactivex.internal.operators.observable.ObservableMap$MapObserver.onNext(ObservableMap.java:59)
   at io.reactivex.internal.operators.observable.ObservableSubscribeOn$SubscribeOnObserver.onNext(ObservableSubscribeOn.java:58)
   at io.reactivex.internal.operators.observable.ObservableScalarXMap$ScalarDisposable.run(ObservableScalarXMap.java:248)
   at io.reactivex.internal.operators.observable.ObservableJust.subscribeActual(ObservableJust.java:35)
   at io.reactivex.Observable.subscribe(Observable.java:10838)
   at io.reactivex.internal.operators.observable.ObservableSubscribeOn$SubscribeTask.run(ObservableSubscribeOn.java:96)
   at io.reactivex.Scheduler$DisposeTask.run(Scheduler.java:452)
   at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:61)
   at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:52)
   at java.util.concurrent.FutureTask.run(FutureTask.java:237)
   at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:272)
   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
   at java.lang.Thread.run(Thread.java:761)

StackTrace filtering

Tell RxJava2Debug which packages names you want to highlight, and RxJava2Debug will make sure they appear as the top of the StackTrace

Config:

RxJava2Debug.enableRxJava2AssemblyTracking(new String[]{"com.akaita.fgas", "com.akaita.android"});

Result:

FATAL EXCEPTION: main
Process: com.akaita.fgas.debug, PID: 22538
java.lang.Throwable: caused by java.lang.NullPointerException: The mapper function returned a null value.
   at io.reactivex.internal.functions.ObjectHelper.requireNonNull(ObjectHelper.java:39)
   at io.reactivex.internal.operators.observable.ObservableMap$MapObserver.onNext(ObservableMap.java:59)
   [...]
Caused by: java.lang.Throwable
   at com.akaita.fgas.activities.TopActivity.onResume(TopActivity.java:205)
   at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1269)
   at android.app.Activity.performResume(Activity.java:6766)
   at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3377)
   at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3440)
   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2713)
   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460)
   at android.os.Handler.dispatchMessage(Handler.java:102)
   at android.os.Looper.loop(Looper.java:154)
   at android.app.ActivityThread.main(ActivityThread.java:6077)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)

This comes in very handy when you work with a error reporting system such as Crashlytics.

Instead of getting a multitude of reports involving RxJava2 into a single report entry, you'll get one entry per crash.

Credits

This library is using a subset of classes from akarnokd's RxJava2Extensions.

RxJava2Extensions takes about 1mb and contains 5231 methods. RxJava2Debug takes about 38kb and contains 239 methods.

Comments
  • NullPointerException in ExceptionUtils

    NullPointerException in ExceptionUtils

    Hello,

    I just got a NullPointerException crash with this stacktrace :

    Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object java.lang.StackTraceElement[].clone()' on a null object reference
           at com.akaita.java.rxjava2debug.ExceptionUtils.collapseCauses(SourceFile:60)
           at com.akaita.java.rxjava2debug.ExceptionUtils.setRootCause(SourceFile:37)
           at com.akaita.java.rxjava2debug.RxJava2Debug.getEnhancedStackTrace(SourceFile:74)
    

    It seems that there is an issue in the collapseCauses method of the ExceptionUtils class.

    Thanks in advance for your answer !

    bug 
    opened by HappyDr0id 15
  • Any sample to help us to absolutely config it properly without any doubt?

    Any sample to help us to absolutely config it properly without any doubt?

    I have tried to configure this library in my project, but it did not give extra information for me. With or without the RxJava2Debug applied, it gives same obscure information. a sample repository has been created to reproduce this issue.

    Is it because I did not config the Rxjava2Debug incorrectly? Or is it because I am not understanding the Rxjava2Debug function correctly? Or is it because there might be a potential enhancement that needs to be done to achieve such purpose?

    Any help, hints or guidance will be appreciated.

    Without Rxjava2Debug applied, it prints out the following obscure information:

    W: java.lang.NullPointerException: Callable returned null
    W:     at io.reactivex.internal.functions.ObjectHelper.requireNonNull(ObjectHelper.java:39)
    W:     at io.reactivex.internal.operators.observable.ObservableFromCallable.subscribeActual(ObservableFromCallable.java:42)
    W:     at io.reactivex.Observable.subscribe(Observable.java:10842)
    W:     at io.reactivex.Observable.subscribe(Observable.java:10828)
    W:     at io.reactivex.Observable.subscribe(Observable.java:10788)
    W:     at com.github.tonytangandroid.rxjava2debugdemo.MainActivity.onCreate(MainActivity.java:23)
    W:     at android.app.Activity.performCreate(Activity.java:6682)
    W:     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
    W:     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2619)
    W:     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2727)
    W:     at android.app.ActivityThread.-wrap12(ActivityThread.java)
    W:     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1478)
    W:     at android.os.Handler.dispatchMessage(Handler.java:102)
    W:     at android.os.Looper.loop(Looper.java:154)
    W:     at android.app.ActivityThread.main(ActivityThread.java:6121)
    W:     at java.lang.reflect.Method.invoke(Native Method)
    W:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)
    W:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)
    

    With Rxjava2Debug applied it still prints out the same obscure information. It is suppose to locate the root problem, which roots from NullRepo.java at here:

    W: java.lang.NullPointerException: Callable returned null
    W:     at io.reactivex.internal.functions.ObjectHelper.requireNonNull(ObjectHelper.java:39)
    W:     at io.reactivex.internal.operators.observable.ObservableFromCallable.subscribeActual(ObservableFromCallable.java:42)
    W:     at io.reactivex.Observable.subscribe(Observable.java:10842)
    W:     at io.reactivex.Observable.subscribe(Observable.java:10828)
    W:     at io.reactivex.Observable.subscribe(Observable.java:10788)
    W:     at com.github.tonytangandroid.rxjava2debugdemo.MainActivity.onCreate(MainActivity.java:23)
    W:     at android.app.Activity.performCreate(Activity.java:6682)
    W:     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
    W:     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2619)
    W:     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2727)
    W:     at android.app.ActivityThread.-wrap12(ActivityThread.java)
    W:     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1478)
    W:     at android.os.Handler.dispatchMessage(Handler.java:102)
    W:     at android.os.Looper.loop(Looper.java:154)
    W:     at android.app.ActivityThread.main(ActivityThread.java:6121)
    W:     at java.lang.reflect.Method.invoke(Native Method)
    W:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)
    W:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)
    
    enhancement help wanted 
    opened by TonyTangAndroid 13
  • Upgrade to RxJava 2.2.1, fixes due to internal changes in Rx

    Upgrade to RxJava 2.2.1, fixes due to internal changes in Rx

    This PR upgrades the library to RxJava 2.2.1 and updates the code that depended on internal components, which have been changed in RxJava 2.2.1, making the release version of this library incompatible with 2.2.1.

    opened by akarnokd 7
  • java.lang.Throwable is shown instead of name of concrete exception class implementation

    java.lang.Throwable is shown instead of name of concrete exception class implementation

    Original stacktrace:

    FATAL EXCEPTION: pool-13-thread-2 Process: com.myapp.dev, PID: 7141 io.reactivex.exceptions.OnErrorNotImplementedException: TEST exception!!! at io.reactivex.internal.functions.Functions$OnErrorMissingConsumer.accept(Functions.java:704) at io.reactivex.internal.functions.Functions$OnErrorMissingConsumer.accept(Functions.java:701) at io.reactivex.internal.subscribers.LambdaSubscriber.onError(LambdaSubscriber.java:79) at io.reactivex.internal.subscribers.BasicFuseableSubscriber.onError(BasicFuseableSubscriber.java:101) at io.reactivex.internal.subscribers.BasicFuseableSubscriber.fail(BasicFuseableSubscriber.java:111) at io.reactivex.internal.operators.flowable.FlowableMap$MapSubscriber.onNext(FlowableMap.java:66) at io.reactivex.internal.operators.flowable.FlowableMap$MapSubscriber.onNext(FlowableMap.java:69) at io.reactivex.internal.operators.flowable.FlowableFilter$FilterSubscriber.tryOnNext(FlowableFilter.java:74) at io.reactivex.internal.operators.flowable.FlowableMap$MapConditionalSubscriber.tryOnNext(FlowableMap.java:129) at io.reactivex.internal.operators.flowable.FlowableObserveOn$ObserveOnConditionalSubscriber.runAsync(FlowableObserveOn.java:637) at io.reactivex.internal.operators.flowable.FlowableObserveOn$BaseObserveOnSubscriber.run(FlowableObserveOn.java:176) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) at java.lang.Thread.run(Thread.java:761) Caused by: java.lang.UnsupportedOperationException: TEST exception!!! at com.myapp.dev.home.HomeViewModel$observeProfilePicture$1.apply(HomeViewModel.kt:42) at com.myapp.dev.home.HomeViewModel$observeProfilePicture$1.apply(HomeViewModel.kt:13) at io.reactivex.internal.operators.flowable.FlowableMap$MapSubscriber.onNext(FlowableMap.java:64) at io.reactivex.internal.operators.flowable.FlowableMap$MapSubscriber.onNext(FlowableMap.java:69)  at io.reactivex.internal.operators.flowable.FlowableFilter$FilterSubscriber.tryOnNext(FlowableFilter.java:74)  at io.reactivex.internal.operators.flowable.FlowableMap$MapConditionalSubscriber.tryOnNext(FlowableMap.java:129)  at io.reactivex.internal.operators.flowable.FlowableObserveOn$ObserveOnConditionalSubscriber.runAsync(FlowableObserveOn.java:637)  at io.reactivex.internal.operators.flowable.FlowableObserveOn$BaseObserveOnSubscriber.run(FlowableObserveOn.java:176)  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)  at java.lang.Thread.run(Thread.java:761) `

    Generated by library stacktrace:

    FATAL EXCEPTION: pool-15-thread-2 Process: com.myapp.dev, PID: 7637 java.lang.Throwable: TEST exception!!! at com.myapp.dev.ui.home.HomeViewModel$observeProfilePicture$1.apply(HomeViewModel.kt:42) at com.myapp.dev.ui.home.HomeViewModel$observeProfilePicture$1.apply(HomeViewModel.kt:13) at io.reactivex.internal.operators.flowable.FlowableMap$MapSubscriber.onNext(FlowableMap.java:64) at hu.akarnokd.rxjava2.debug.FlowableOnAssembly$OnAssemblySubscriber.onNext(FlowableOnAssembly.java:61) at io.reactivex.internal.operators.flowable.FlowableMap$MapSubscriber.onNext(FlowableMap.java:69) at hu.akarnokd.rxjava2.debug.FlowableOnAssembly$OnAssemblySubscriber.onNext(FlowableOnAssembly.java:61) at io.reactivex.internal.operators.flowable.FlowableFilter$FilterSubscriber.tryOnNext(FlowableFilter.java:74) at hu.akarnokd.rxjava2.debug.FlowableOnAssembly$OnAssemblyConditionalSubscriber.tryOnNext(FlowableOnAssembly.java:103) at io.reactivex.internal.operators.flowable.FlowableMap$MapConditionalSubscriber.tryOnNext(FlowableMap.java:129) at hu.akarnokd.rxjava2.debug.FlowableOnAssembly$OnAssemblyConditionalSubscriber.tryOnNext(FlowableOnAssembly.java:103) at io.reactivex.internal.operators.flowable.FlowableObserveOn$ObserveOnConditionalSubscriber.runAsync(FlowableObserveOn.java:637) at io.reactivex.internal.operators.flowable.FlowableObserveOn$BaseObserveOnSubscriber.run(FlowableObserveOn.java:176) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) at java.lang.Thread.run(Thread.java:761) Caused by: java.lang.Throwable Caused by: java.lang.Throwable

    Android version: 7.1.1 RxJava version: 2.1.7

    opened by DmytroBatyuk 7
  • Dependency conflict with rxjava2-extensions

    Dependency conflict with rxjava2-extensions

    Program type already present: hu.akarnokd.rxjava2.debug.SingleOnAssembly
    

    RxJava2Debug exports one of RxJava2Extensions package. Which breaks build if original RxJava2Extensions is also used.

    opened by stari4ek 3
  • java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object java.lang.StackTraceElement[].clone()' on a null object reference

    java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object java.lang.StackTraceElement[].clone()' on a null object reference

    12-07 08:16:41.066 13893-13893/? E/NewsListAdapter: notifyDataSetChanged 12-07 08:16:41.516 2740-22749/? E/getCommonFilePath: getCommonFilePath error 12-07 08:16:41.536 30822-5438/? E/AppStore.Wave: keyUrl is empty 12-07 08:16:46.806 3159-3171/? E/ANDR-PERF-MPCTL: Invalid profile no. 0, total profiles 0 only 12-07 08:16:46.866 3159-3171/? E/ANDR-PERF-MPCTL: Invalid profile no. 0, total profiles 0 only 12-07 08:16:48.156 3159-3171/? E/ANDR-PERF-MPCTL: Invalid profile no. 0, total profiles 0 only 12-07 08:16:48.596 2417-2990/? E/PhoneInterfaceManager: [PhoneIntfMgr] getIccId: ICC ID is null or empty. 12-07 08:16:50.766 3159-3171/? E/ANDR-PERF-MPCTL: Invalid profile no. 0, total profiles 0 only 12-07 08:16:51.466 22800-22800/com.baidao.futures E/FuturesApp: Fatal Exception thrown on Scheduler. java.lang.IllegalStateException: Fatal Exception thrown on Scheduler. at io.reactivex.android.schedulers.HandlerScheduler$ScheduledRunnable.run(HandlerScheduler.java:111) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5628) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:853) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:737) Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object java.lang.StackTraceElement[].clone()' on a null object reference at com.akaita.java.rxjava2debug.ExceptionUtils.collapseCauses(ExceptionUtils.java:60) at com.akaita.java.rxjava2debug.ExceptionUtils.setRootCause(ExceptionUtils.java:37) at com.akaita.java.rxjava2debug.RxJava2Debug.getEnhancedStackTrace(RxJava2Debug.java:74) at com.baidao.retrofitadapter2.YtxHttpObserver.onError(YtxHttpObserver.java:51) at hu.akarnokd.rxjava2.debug.ObservableOnAssembly$OnAssemblyObserver.onError(ObservableOnAssembly.java:60) at io.reactivex.internal.operators.observable.ObservableObserveOn$ObserveOnObserver.checkTerminated(ObservableObserveOn.java:276) at io.reactivex.internal.operators.observable.ObservableObserveOn$ObserveOnObserver.drainNormal(ObservableObserveOn.java:172) at io.reactivex.internal.operators.observable.ObservableObserveOn$ObserveOnObserver.run(ObservableObserveOn.java:252) at io.reactivex.android.schedulers.HandlerScheduler$ScheduledRunnable.run(HandlerScheduler.java:109) at android.os.Handler.handleCallback(Handler.java:739)  at android.os.Handler.dispatchMessage(Handler.java:95)  at android.os.Looper.loop(Looper.java:148)  at android.app.ActivityThread.main(ActivityThread.java:5628)  at java.lang.reflect.Method.invoke(Native Method)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:853)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:737)  12-07 08:16:51.466 22800-22800/com.baidao.futures E/Tinker.SampleUncaughtExHandler: uncaughtException:Fatal Exception thrown on Scheduler. 12-07 08:16:51.476 22800-22800/com.baidao.futures E/Tinker.UncaughtHandler: TinkerUncaughtHandler catch exception:java.lang.IllegalStateException: Fatal Exception thrown on Scheduler. at io.reactivex.android.schedulers.HandlerScheduler$ScheduledRunnable.run(HandlerScheduler.java:111) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5628) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:853) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:737) Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object java.lang.StackTraceElement[].clone()' on a null object reference at com.akaita.java.rxjava2debug.ExceptionUtils.collapseCauses(ExceptionUtils.java:60) at com.akaita.java.rxjava2debug.ExceptionUtils.setRootCause(ExceptionUtils.java:37) at com.akaita.java.rxjava2debug.RxJava2Debug.getEnhancedStackTrace(RxJava2Debug.java:74) at com.baidao.retrofitadapter2.YtxHttpObserver.onError(YtxHttpObserver.java:51) at hu.akarnokd.rxjava2.debug.ObservableOnAssembly$OnAssemblyObserver.onError(ObservableOnAssembly.java:60) at io.reactivex.internal.operators.observable.ObservableObserveOn$ObserveOnObserver.checkTerminated(ObservableObserveOn.java:276) at io.reactivex.internal.operators.observable.ObservableObserveOn$ObserveOnObserver.drainNormal(ObservableObserveOn.java:172) at io.reactivex.internal.operators.observable.ObservableObserveOn$ObserveOnObserver.run(ObservableObserveOn.java:252) at io.reactivex.android.schedulers.HandlerScheduler$ScheduledRunnable.run(HandlerScheduler.java:109) at android.os.Handler.handleCallback(Handler.java:739)  at android.os.Handler.dispatchMessage(Handler.java:95)  at android.os.Looper.loop(Looper.java:148)  at android.app.ActivityThread.main(ActivityThread.java:5628)  at java.lang.reflect.Method.invoke(Native Method)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:853)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:737)  12-07 08:16:51.476 22800-22800/com.baidao.futures E/AndroidRuntime: FATAL EXCEPTION: main Process: com.baidao.futures, PID: 22800 java.lang.IllegalStateException: Fatal Exception thrown on Scheduler. at io.reactivex.android.schedulers.HandlerScheduler$ScheduledRunnable.run(HandlerScheduler.java:111) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5628) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:853) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:737) Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object java.lang.StackTraceElement[].clone()' on a null object reference at com.akaita.java.rxjava2debug.ExceptionUtils.collapseCauses(ExceptionUtils.java:60) at com.akaita.java.rxjava2debug.ExceptionUtils.setRootCause(ExceptionUtils.java:37) at com.akaita.java.rxjava2debug.RxJava2Debug.getEnhancedStackTrace(RxJava2Debug.java:74) at com.baidao.retrofitadapter2.YtxHttpObserver.onError(YtxHttpObserver.java:51) at hu.akarnokd.rxjava2.debug.ObservableOnAssembly$OnAssemblyObserver.onError(ObservableOnAssembly.java:60) at io.reactivex.internal.operators.observable.ObservableObserveOn$ObserveOnObserver.checkTerminated(ObservableObserveOn.java:276) at io.reactivex.internal.operators.observable.ObservableObserveOn$ObserveOnObserver.drainNormal(ObservableObserveOn.java:172) at io.reactivex.internal.operators.observable.ObservableObserveOn$ObserveOnObserver.run(ObservableObserveOn.java:252) at io.reactivex.android.schedulers.HandlerScheduler$ScheduledRunnable.run(HandlerScheduler.java:109) at android.os.Handler.handleCallback(Handler.java:739)  at android.os.Handler.dispatchMessage(Handler.java:95)  at android.os.Looper.loop(Looper.java:148)  at android.app.ActivityThread.main(ActivityThread.java:5628)  at java.lang.reflect.Method.invoke(Native Method)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:853)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:737)  12-07 08:16:52.006 3159-3171/? E/ANDR-PERF-MPCTL: Invalid profile no. 0, total profiles 0 only 12-07 08:16:52.096 2475-2560/? E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /data/bbkcore/theme/icons/dynamic_icon/com.vivo.weather/res/drawable-sw360dp-xxhdpi/dynamic_weather_sun.png: open failed: ENOENT (No such file or directory) 12-07 08:16:52.096 2475-2560/? E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /data/bbkcore/theme/icons/dynamic_icon/com.vivo.weather/res/drawable-sw360dp-xxhdpi/dynamic_weather_degree.png: open failed: ENOENT (No such file or directory) 12-07 08:16:52.096 2475-2560/? E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /data/bbkcore/theme/icons/dynamic_icon/com.vivo.weather/res/drawable-sw360dp-xxhdpi/dynamic_weather_minus.png: open failed: ENOENT (No such file or directory) 12-07 08:17:00.016 2475-2560/? E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /data/bbkcore/theme/icons/dynamic_icon/com.android.BBKClock/res/drawable-sw360dp-xxhdpi/clock_hour.png: open failed: ENOENT (No such file or directory) 12-07 08:17:00.026 2475-2560/? E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /data/bbkcore/theme/icons/dynamic_icon/com.android.BBKClock/res/drawable-sw360dp-xxhdpi/clock_minute.png: open failed: ENOENT (No such file or directory) 12-07 08:17:00.026 2475-2560/? E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /data/bbkcore/theme/icons/dynamic_icon/com.android.BBKClock/res/drawable-sw360dp-xxhdpi/clock_dial.png: open failed: ENOENT (No such file or directory) 12-07 08:17:00.026 2475-2560/? E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /data/bbkcore/theme/icons/dynamic_icon/com.android.BBKClock/res/drawable-sw360dp-xxhdpi/clock_dial_center.png: open failed: ENOENT (No such file or directory) 12-07 08:17:40.306 2417-2965/? E/PhoneInterfaceManager: [PhoneIntfMgr] getIccId: ICC ID is null or empty. 12-07 08:17:40.366 22951-23001/com.baidao.futures E/PushIntentService: onReceiveClientId -> clientid = 580f1e13985a5e750773f1ad9fc540f4 12-07 08:18:00.026 2475-2560/? E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /data/bbkcore/theme/icons/dynamic_icon/com.android.BBKClock/res/drawable-sw360dp-xxhdpi/clock_hour.png: open failed: ENOENT (No such file or directory) 12-07 08:18:00.026 2475-2560/? E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /data/bbkcore/theme/icons/dynamic_icon/com.android.BBKClock/res/drawable-sw360dp-xxhdpi/clock_minute.png: open failed: ENOENT (No such file or directory) 12-07 08:18:00.026 2475-2560/? E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /data/bbkcore/theme/icons/dynamic_icon/com.android.BBKClock/res/drawable-sw360dp-xxhdpi/clock_dial.png: open failed: ENOENT (No such file or directory) 12-07 08:18:00.026 2475-2560/? E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /data/bbkcore/theme/icons/dynamic_icon/com.android.BBKClock/res/drawable-sw360dp-xxhdpi/clock_dial_center.png: open failed: ENOENT (No such file or directory) 12-07 08:18:08.036 3159-3171/? E/ANDR-PERF-MPCTL: Invalid profile no. 0, total profiles 0 only 12-07 08:18:08.036 2475-2475/? E/Launcher.DropTarget: Workspace onDragStart: Drag contract violated: 1 12-07 08:18:08.036 2475-2475/? E/Launcher.DropTarget: Workspace onDragEnter: Drag contract violated: 2 12-07 08:18:08.646 2475-2475/? E/Launcher.DropTarget: Workspace onDragExit: Drag contract violated: 1 12-07 08:18:08.806 2475-2475/? E/Launcher.DropTarget: Workspace onDragEnd: Drag contract violated: 1 12-07 08:18:11.146 3159-3171/? E/ANDR-PERF-MPCTL: Invalid profile no. 0, total profiles 0 only 12-07 08:18:11.176 2475-2560/? E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /data/bbkcore/theme/icons/dynamic_icon/com.vivo.weather/res/drawable-sw360dp-xxhdpi/dynamic_weather_sun.png: open failed: ENOENT (No such file or directory) 12-07 08:18:11.176 2475-2560/? E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /data/bbkcore/theme/icons/dynamic_icon/com.vivo.weather/res/drawable-sw360dp-xxhdpi/dynamic_weather_degree.png: open failed: ENOENT (No such file or directory) 12-07 08:18:11.186 2475-2560/? E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /data/bbkcore/theme/icons/dynamic_icon/com.vivo.weather/res/drawable-sw360dp-xxhdpi/dynamic_weather_minus.png: open failed: ENOENT (No such file or directory) 12-07 08:18:15.656 1394-1810/? E/qti_sensors_hal: w_orient output WORT 0 60 6 12-07 08:18:15.726 1394-1810/? E/qti_sensors_hal: w_orient output WORT 0 58 6 12-07 08:18:15.776 1394-1810/? E/qti_sensors_hal: w_orient output WORT 0 57 6 12-07 08:18:15.846 1394-1810/? E/qti_sensors_hal: w_orient output WORT 0 56 8 12-07 08:18:15.906 1394-1810/? E/qti_sensors_hal: w_orient output WORT 0 55 9 12-07 08:18:16.296 3159-3171/? E/ANDR-PERF-MPCTL: Invalid profile no. 0, total profiles 0 only 12-07 08:18:18.416 3159-3171/? E/ANDR-PERF-MPCTL: Invalid profile no. 0, total profiles 0 only 12-07 08:18:18.756 22951-23049/com.baidao.futures E/PushIntentService: onReceiveClientId -> clientid = 580f1e13985a5e750773f1ad9fc540f4 12-07 08:18:20.896 1394-1810/? E/qti_sensors_hal: w_orient output WORT 3 59 287 12-07 08:18:20.956 1394-1810/? E/qti_sensors_hal: w_orient output WORT 3 58 283 12-07 08:18:21.016 1394-1810/? E/qti_sensors_hal: w_orient output WORT 3 56 281 12-07 08:18:21.076 1394-1810/? E/qti_sensors_hal: w_orient output WORT 3 55 283 12-07 08:18:21.196 1394-1810/? E/qti_sensors_hal: w_orient output WORT 3 53 283 12-07 08:18:22.036 1394-1810/? E/qti_sensors_hal: w_orient output WORT -1 78 0 12-07 08:18:22.096 1394-1810/? E/qti_sensors_hal: w_orient output WORT -1 79 0 12-07 08:18:22.166 1394-1810/? E/qti_sensors_hal: w_orient output WORT -1 81 0 12-07 08:18:22.216 1394-1810/? E/qti_sensors_hal: w_orient output WORT -1 82 0 12-07 08:18:22.276 1394-1810/? E/qti_sensors_hal: w_orient output WORT -1 82 0 12-07 08:18:32.996 1394-1853/? E/native: do suspend false 12-07 08:18:33.066 1394-1853/? E/WifiStateMachine: handleIPv4Success vivoDhcpHistoryLeaseTime 1512605920274 12-07 08:18:33.106 1394-1888/? E/VivoBandWidthCollect: Unhandled message { when=-2ms what=137473 obj=Intent { act=android.net.wifi.STATE_CHANGE flg=0x4000010 (has extras) } target=com.android.internal.util.StateMachine$SmHandler } in state VivoWifiConnectedState 12-07 08:18:33.126 1394-1853/? E/wifi_gbk2utf: g_pItemList is NULL 12-07 08:18:33.146 1394-1853/? E/native: do setRoamMode true 12-07 08:19:00.026 2475-2560/? E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /data/bbkcore/theme/icons/dynamic_icon/com.android.BBKClock/res/drawable-sw360dp-xxhdpi/clock_hour.png: open failed: ENOENT (No such file or directory) 12-07 08:19:00.026 2475-2560/? E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /data/bbkcore/theme/icons/dynamic_icon/com.android.BBKClock/res/drawable-sw360dp-xxhdpi/clock_minute.png: open failed: ENOENT (No such file or directory) 12-07 08:19:00.026 2475-2560/? E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /data/bbkcore/theme/icons/dynamic_icon/com.android.BBKClock/res/drawable-sw360dp-xxhdpi/clock_dial.png: open failed: ENOENT (No such file or directory) 12-07 08:19:00.026 2475-2560/? E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /data/bbkcore/theme/icons/dynamic_icon/com.android.BBKClock/res/drawable-sw360dp-xxhdpi/clock_dial_center.png: open failed: ENOENT (No such file or directory) 12-07 08:19:41.026 1394-1462/? E/ActivityManager: ANR in com.baidao.futures PID: 22951 Reason: Broadcast of Intent { act=MqttService.pingSender.dd340806-a3b4-4f6e-ac7d-7c579e723a9e flg=0x14 (has extras) } 12-07 08:20:00.026 2475-2560/? E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /data/bbkcore/theme/icons/dynamic_icon/com.android.BBKClock/res/drawable-sw360dp-xxhdpi/clock_hour.png: open failed: ENOENT (No such file or directory) 12-07 08:20:00.026 2475-2560/? E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /data/bbkcore/theme/icons/dynamic_icon/com.android.BBKClock/res/drawable-sw360dp-xxhdpi/clock_minute.png: open failed: ENOENT (No such file or directory) 12-07 08:20:00.026 2475-2560/? E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /data/bbkcore/theme/icons/dynamic_icon/com.android.BBKClock/res/drawable-sw360dp-xxhdpi/clock_dial.png: open failed: ENOENT (No such file or directory) 12-07 08:20:00.026 2475-2560/? E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /data/bbkcore/theme/icons/dynamic_icon/com.android.BBKClock/res/drawable-sw360dp-xxhdpi/clock_dial_center.png: open failed: ENOENT (No such file or directory) 12-07 08:21:00.026 2475-2560/? E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /data/bbkcore/theme/icons/dynamic_icon/com.android.BBKClock/res/drawable-sw360dp-xxhdpi/clock_hour.png: open failed: ENOENT (No such file or directory) 12-07 08:21:00.026 2475-2560/? E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /data/bbkcore/theme/icons/dynamic_icon/com.android.BBKClock/res/drawable-sw360dp-xxhdpi/clock_minute.png: open failed: ENOENT (No such file or directory) 12-07 08:21:00.026 2475-2560/? E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /data/bbkcore/theme/icons/dynamic_icon/com.android.BBKClock/res/drawable-sw360dp-xxhdpi/clock_dial.png: open failed: ENOENT (No such file or directory) 12-07 08:21:00.026 2475-2560/? E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /data/bbkcore/theme/icons/dynamic_icon/com.android.BBKClock/res/drawable-sw360dp-xxhdpi/clock_dial_center.png: open failed: ENOENT (No such file or directory) 12-07 08:21:38.996 1394-1462/? E/ActivityManager: ANR in com.baidao.futures PID: 22951 Reason: executing service com.baidao.futures/.support.notification.igexin.PushIntentService 12-07 08:21:41.586 2740-22661/? E/TcpNetwork: recv() SocketException java.net.SocketException: Socket closed 12-07 08:22:00.026 2475-2560/? E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /data/bbkcore/theme/icons/dynamic_icon/com.android.BBKClock/res/drawable-sw360dp-xxhdpi/clock_hour.png: open failed: ENOENT (No such file or directory) 12-07 08:22:00.026 2475-2560/? E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /data/bbkcore/theme/icons/dynamic_icon/com.android.BBKClock/res/drawable-sw360dp-xxhdpi/clock_minute.png: open failed: ENOENT (No such file or directory) 12-07 08:22:00.026 2475-2560/? E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /data/bbkcore/theme/icons/dynamic_icon/com.android.BBKClock/res/drawable-sw360dp-xxhdpi/clock_dial.png: open failed: ENOENT (No such file or directory) 12-07 08:22:00.026 2475-2560/? E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /data/bbkcore/theme/icons/dynamic_icon/com.android.BBKClock/res/drawable-sw360dp-xxhdpi/clock_dial_center.png: open failed: ENOENT (No such file or directory) 12-07 08:23:00.026 2475-2560/? E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /data/bbkcore/theme/icons/dynamic_icon/com.android.BBKClock/res/drawable-sw360dp-xxhdpi/clock_hour.png: open failed: ENOENT (No such file or directory) 12-07 08:23:00.026 2475-2560/? E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /data/bbkcore/theme/icons/dynamic_icon/com.android.BBKClock/res/drawable-sw360dp-xxhdpi/clock_minute.png: open failed: ENOENT (No such file or directory) 12-07 08:23:00.026 2475-2560/? E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /data/bbkcore/theme/icons/dynamic_icon/com.android.BBKClock/res/drawable-sw360dp-xxhdpi/clock_dial.png: open failed: ENOENT (No such file or directory) 12-07 08:23:00.026 2475-2560/? E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /data/bbkcore/theme/icons/dynamic_icon/com.android.BBKClock/res/drawable-sw360dp-xxhdpi/clock_dial_center.png: open failed: ENOENT (No such file or directory) 12-07 08:24:00.016 2475-2560/? E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /data/bbkcore/theme/icons/dynamic_icon/com.android.BBKClock/res/drawable-sw360dp-xxhdpi/clock_hour.png: open failed: ENOENT (No such file or directory) 12-07 08:24:00.016 2475-2560/? E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /data/bbkcore/theme/icons/dynamic_icon/com.android.BBKClock/res/drawable-sw360dp-xxhdpi/clock_minute.png: open failed: ENOENT (No such file or directory) 12-07 08:24:00.016 2475-2560/? E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /data/bbkcore/theme/icons/dynamic_icon/com.android.BBKClock/res/drawable-sw360dp-xxhdpi/clock_dial.png: open failed: ENOENT (No such file or directory) 12-07 08:24:00.026 2475-2560/? E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /data/bbkcore/theme/icons/dynamic_icon/com.android.BBKClock/res/drawable-sw360dp-xxhdpi/clock_dial_center.png: open failed: ENOENT (No such file or directory) 12-07 08:24:43.076 1394-1460/? E/SyncManager: Bind attempt failed - target: ComponentInfo{com.qihoo.appstore/com.qihoo.appstore.keepalive.account.SyncServiceNew} 12-07 08:24:43.086 1394-1460/? E/SyncManager: Bind attempt failed - target: ComponentInfo{com.ss.android.article.news/com.ss.android.account.AccountSyncService} 12-07 08:25:00.026 2475-2560/? E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /data/bbkcore/theme/icons/dynamic_icon/com.android.BBKClock/res/drawable-sw360dp-xxhdpi/clock_hour.png: open failed: ENOENT (No such file or directory) 12-07 08:25:00.026 2475-2560/? E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /data/bbkcore/theme/icons/dynamic_icon/com.android.BBKClock/res/drawable-sw360dp-xxhdpi/clock_minute.png: open failed: ENOENT (No such file or directory) 12-07 08:25:00.026 2475-2560/? E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /data/bbkcore/theme/icons/dynamic_icon/com.android.BBKClock/res/drawable-sw360dp-xxhdpi/clock_dial.png: open failed: ENOENT (No such file or directory) 12-07 08:25:00.026 2475-2560/? E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /data/bbkcore/theme/icons/dynamic_icon/com.android.BBKClock/res/drawable-sw360dp-xxhdpi/clock_dial_center.png: open failed: ENOENT (No such file or directory) 12-07 08:26:00.026 2475-2560/? E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /data/bbkcore/theme/icons/dynamic_icon/com.android.BBKClock/res/drawable-sw360dp-xxhdpi/clock_hour.png: open failed: ENOENT (No such file or directory) 12-07 08:26:00.026 2475-2560/? E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /data/bbkcore/theme/icons/dynamic_icon/com.android.BBKClock/res/drawable-sw360dp-xxhdpi/clock_minute.png: open failed: ENOENT (No such file or directory) 12-07 08:26:00.026 2475-2560/? E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /data/bbkcore/theme/icons/dynamic_icon/com.android.BBKClock/res/drawable-sw360dp-xxhdpi/clock_dial.png: open failed: ENOENT (No such file or directory) 12-07 08:26:00.026 2475-2560/? E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /data/bbkcore/theme/icons/dynamic_icon/com.android.BBKClock/res/drawable-sw360dp-xxhdpi/clock_dial_center.png: open failed: ENOENT (No such file or directory) 12-07 08:27:00.036 2475-2560/? E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /data/bbkcore/theme/icons/dynamic_icon/com.android.BBKClock/res/drawable-sw360dp-xxhdpi/clock_hour.png: open failed: ENOENT (No such file or directory) 12-07 08:27:00.036 2475-2560/? E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /data/bbkcore/theme/icons/dynamic_icon/com.android.BBKClock/res/drawable-sw360dp-xxhdpi/clock_minute.png: open failed: ENOENT (No such file or directory) 12-07 08:27:00.036 2475-2560/? E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /data/bbkcore/theme/icons/dynamic_icon/com.android.BBKClock/res/drawable-sw360dp-xxhdpi/clock_dial.png: open failed: ENOENT (No such file or directory) 12-07 08:27:00.036 2475-2560/? E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /data/bbkcore/theme/icons/dynamic_icon/com.android.BBKClock/res/drawable-sw360dp-xxhdpi/clock_dial_center.png: open failed: ENOENT (No such file or directory) 12-07 08:28:00.036 2475-2560/? E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /data/bbkcore/theme/icons/dynamic_icon/com.android.BBKClock/res/drawable-sw360dp-xxhdpi/clock_hour.png: open failed: ENOENT (No such file or directory) 12-07 08:28:00.036 2475-2560/? E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /data/bbkcore/theme/icons/dynamic_icon/com.android.BBKClock/res/drawable-sw360dp-xxhdpi/clock_minute.png: open failed: ENOENT (No such file or directory) 12-07 08:28:00.036 2475-2560/? E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /data/bbkcore/theme/icons/dynamic_icon/com.android.BBKClock/res/drawable-sw360dp-xxhdpi/clock_dial.png: open failed: ENOENT (No such file or directory) 12-07 08:28:00.036 2475-2560/? E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /data/bbkcore/theme/icons/dynamic_icon/com.android.BBKClock/res/drawable-sw360dp-xxhdpi/clock_dial_center.png: open failed: ENOENT (No such file or directory) 12-07 08:28:01.386 3159-3171/? E/ANDR-PERF-MPCTL: Invalid profile no. 0, total profiles 0 only 12-07 08:28:01.426 2475-2560/? E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /data/bbkcore/theme/icons/dynamic_icon/com.vivo.weather/res/drawable-sw360dp-xxhdpi/dynamic_weather_sun.png: open failed: ENOENT (No such file or directory) 12-07 08:28:01.426 2475-2560/? E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /data/bbkcore/theme/icons/dynamic_icon/com.vivo.weather/res/drawable-sw360dp-xxhdpi/dynamic_weather_degree.png: open failed: ENOENT (No such file or directory) 12-07 08:28:01.426 2475-2560/? E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /data/bbkcore/theme/icons/dynamic_icon/com.vivo.weather/res/drawable-sw360dp-xxhdpi/dynamic_weather_minus.png: open failed: ENOENT (No such file or directory) 12-07 08:28:07.806 22951-22951/com.baidao.futures E/YtxHttpObserver: The mapper function returned a null value. java.lang.Throwable Caused by: java.lang.Throwable Caused by: java.lang.Throwable at io.reactivex.Observable.map(Observable.java:8630) at com.baidao.futures.module.home.model.HomeModel.loadHomePageDialogData(HomeModel.java:30) at com.baidao.futures.module.home.HomePresenter.loadHomeDialogData(HomePresenter.java:67) at com.baidao.futures.module.home.HomePresenter.onViewCreated(HomePresenter.java:52) at com.baidao.library.lifecycle.FragmentLifecycle.onViewCreated(FragmentLifecycle.java:29) at com.baidao.library.lifecycle.SupportLifecycleFragment.onViewCreated(SupportLifecycleFragment.java:136) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1127) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1290) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1272) at android.support.v4.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:2149) at android.support.v4.app.Fragment.performActivityCreated(Fragment.java:2095) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1133) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1290) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1272) at android.support.v4.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:2149) at android.support.v4.app.FragmentController.dispatchActivityCreated(FragmentController.java:201) at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:600) at android.support.v7.app.AppCompatActivity.onStart(AppCompatActivity.java:178) at com.futures.appframework.BaseActivity.onStart(BaseActivity.java:161) at com.baidao.futures.module.MainActivity.onStart(MainActivity.java:208) at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1244) at android.app.Activity.performStart(Activity.java:6336) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2480) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2577) at android.app.ActivityThread.access$1000(ActivityThread.java:166) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1414) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5628) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:853) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:737)

    duplicate 
    opened by hexi 3
  • Stacktrace filtering and proguard

    Stacktrace filtering and proguard

    Hello, quick question:

    I guess that this stacktrace filtering feature will not work with obfuscated stacktraces as proguard moves all the files into a package called 'o'.

    Any thoughts on this?

    Thanks

    opened by athkalia 1
  • RxJava2Debug changes behavior of replay().refCount()

    RxJava2Debug changes behavior of replay().refCount()

    RxJava version : 2.2.8 & 2.2.1 (tested in both versions) RxJava2Debug version : 1.4.0

    Code (in Kotlin, in Android)

    val tmp = Observable.just(Unit)
        .flatMap {
            Observable.just(1, 2).delay(1000, TimeUnit.MILLISECONDS)
        }.doOnNext { Log.i("TEST", "onNext: " + it.toString())}
        .replay(1).refCount()
    
    tmp.subscribeBy { // subscription 1
        Log.i("TEST", "sub1 : $it")
    }
    
    Completable.complete()
        .delay(5000, TimeUnit.MILLISECONDS)
        .subscribeBy {
            tmp.subscribeBy { // subscription 2
                Log.i("TEST", "sub2 : $it")
            }
            tmp.subscribeBy { // subscription 3
                Log.i("TEST", "sub3 : $it")
            }
        }
    

    Log

    2019-04-30 16:52:38.364 31138-31449/com.app.sample I/TEST: onNext: 1
    2019-04-30 16:52:38.364 31138-31449/com.app.sample I/TEST: sub1 : 1
    2019-04-30 16:52:38.364 31138-31449/com.app.sample I/TEST: onNext: 2
    2019-04-30 16:52:38.364 31138-31449/com.app.sample I/TEST: sub1 : 2
    
    2019-04-30 16:52:42.367 31138-31450/com.app.sample I/TEST: sub2 : 2
    
    2019-04-30 16:52:43.376 31138-31510/com.app.sample I/TEST: onNext: 1
    2019-04-30 16:52:43.377 31138-31510/com.app.sample I/TEST: sub3 : 1
    2019-04-30 16:52:43.377 31138-31510/com.app.sample I/TEST: onNext: 2
    2019-04-30 16:52:43.377 31138-31510/com.app.sample I/TEST: sub3 : 2
    

    Explanation

    At the time of subscription 2, I expected connectable observable from replay(1) to start over and emit 1 and 2, just like subscription 3. However, subscription 2 only emits 2.

    When I turn off RxJava2Debug, this works as expected like (https://github.com/ReactiveX/RxJava/issues/6471#issuecomment-487925105).

    opened by Rajin9601 0
  • Huge performance impact

    Huge performance impact

    I integrated this library into a project that heavily uses RxJava. Unfortunately enabling the assembly tracking resulted in a non-acceptable performance drop.

    Profiling without RxJava2Debug: RxJava2DebugDisabled

    Profiling with RxJava2Debug: RxJava2DebugEnabled

    The only difference between these two sessions was the line: RxJava2Debug.enableRxJava2AssemblyTracking(new String[]{"my.package.id"});

    I understand that this may not be a bug and is simply an implication of the implementation. However, you should clearly note the possible performance impact in the readme.

    opened by Steppschuh 0
  • RxJava2Debug causing `StackOverflowError` on too complex `CompositeException`

    RxJava2Debug causing `StackOverflowError` on too complex `CompositeException`

    Hi,

    Recently I have encountered a problem using RxJava2Debug on Android.

    In my project I sometimes got OOM errors when trying to log too complex CompositeExceptions from external components using Android Log.e method. To avoid it I strip these exceptions to have 5 original exceptions max using stripCompositeException method included in the gist I linked at the end of this issue.

    In the regular setup this approach works correctly, but using RxJava2Debug, on less performant devices and older apis that have older memory management algorithms (in my case API 17) I got uncaught StackOverflowError that crashes my app. I include the error I'm encountering in the attached test case:

    01-12 15:57:08.835 3908-3908/? E/AndroidRuntime: FATAL EXCEPTION: main
                                                     java.lang.StackOverflowError
                                                         at io.reactivex.internal.observers.BasicFuseableObserver.onSubscribe(BasicFuseableObserver.java:57)
                                                         at io.reactivex.internal.operators.observable.ObservableDoOnEach$DoOnEachObserver.onSubscribe(ObservableDoOnEach.java:73)
                                                         at io.reactivex.internal.observers.BasicFuseableObserver.onSubscribe(BasicFuseableObserver.java:66)
                                                         at io.reactivex.internal.operators.observable.ObservableDoOnEach$DoOnEachObserver.onSubscribe(ObservableDoOnEach.java:73)
                                                         at io.reactivex.internal.observers.BasicFuseableObserver.onSubscribe(BasicFuseableObserver.java:66)
                                                         at io.reactivex.internal.operators.observable.ObservableDoOnEach$DoOnEachObserver.onSubscribe(ObservableDoOnEach.java:73)
                                                         at io.reactivex.internal.observers.BasicFuseableObserver.onSubscribe(BasicFuseableObserver.java:66)
                                                         at io.reactivex.internal.operators.observable.ObservableDoOnEach$DoOnEachObserver.onSubscribe(ObservableDoOnEach.java:73)
                                                         at io.reactivex.internal.observers.BasicFuseableObserver.onSubscribe(BasicFuseableObserver.java:66)
                                                         at io.reactivex.internal.operators.observable.ObservableDoOnEach$DoOnEachObserver.onSubscribe(ObservableDoOnEach.java:73)
                                                         at io.reactivex.internal.observers.BasicFuseableObserver.onSubscribe(BasicFuseableObserver.java:66)
                                                         at io.reactivex.internal.operators.observable.ObservableDoOnEach$DoOnEachObserver.onSubscribe(ObservableDoOnEach.java:73)
                                                         at io.reactivex.internal.observers.BasicFuseableObserver.onSubscribe(BasicFuseableObserver.java:66)
                                                         at io.reactivex.internal.operators.observable.ObservableDoOnEach$DoOnEachObserver.onSubscribe(ObservableDoOnEach.java:73)
                                                         at io.reactivex.internal.observers.BasicFuseableObserver.onSubscribe(BasicFuseableObserver.java:66)
                                                         at io.reactivex.internal.operators.observable.ObservableDoOnEach$DoOnEachObserver.onSubscribe(ObservableDoOnEach.java:73)
                                                         at io.reactivex.internal.observers.BasicFuseableObserver.onSubscribe(BasicFuseableObserver.java:66)
                                                         at io.reactivex.internal.operators.observable.ObservableDoOnEach$DoOnEachObserver.onSubscribe(ObservableDoOnEach.java:73)
                                                         at io.reactivex.internal.observers.BasicFuseableObserver.onSubscribe(BasicFuseableObserver.java:66)
                                                         at io.reactivex.internal.operators.observable.ObservableDoOnEach$DoOnEachObserver.onSubscribe(ObservableDoOnEach.java:73)
                                                         at io.reactivex.internal.observers.BasicFuseableObserver.onSubscribe(BasicFuseableObserver.java:66)
                                                         at io.reactivex.internal.operators.observable.ObservableDoOnEach$DoOnEachObserver.onSubscribe(ObservableDoOnEach.java:73)
                                                         at io.reactivex.internal.observers.BasicFuseableObserver.onSubscribe(BasicFuseableObserver.java:66)
                                                         at io.reactivex.internal.operators.observable.ObservableJust.subscribeActual(ObservableJust.java:34)
                                                         at io.reactivex.Observable.subscribe(Observable.java:10903)
                                                         at hu.akarnokd.rxjava2.debug.ObservableOnAssemblyScalarCallable.subscribeActual(ObservableOnAssemblyScalarCallable.java:41)
                                                         at io.reactivex.Observable.subscribe(Observable.java:10903)
                                                         at io.reactivex.internal.operators.observable.ObservableDoOnEach.subscribeActual(ObservableDoOnEach.java:42)
                                                         at io.reactivex.Observable.subscribe(Observable.java:10903)
                                                         at hu.akarnokd.rxjava2.debug.ObservableOnAssembly.subscribeActual(ObservableOnAssembly.java:41)
                                                         at io.reactivex.Observable.subscribe(Observable.java:10903)
                                                         at io.reactivex.internal.operators.observable.ObservableDoOnEach.subscribeActual(ObservableDoOnEach.java:42)
                                                         at io.reactivex.Observable.subscribe(Observable.java:10903)
                                                         at hu.akarnokd.rxjava2.debug.ObservableOnAssembly.subscribeActual(ObservableOnAssembly.java:41)
                                                         at io.reactivex.Observable.subscribe(Observable.java:10903)
                                                         at io.reactivex.internal.operators.observable.ObservableDoOnEach.subscribeActual(ObservableDoOnEach.java:42)
                                                         at io.reactivex.Observable.subscribe(Observable.java:10903)
                                                         at hu.akarnokd.rxjava2.debug.ObservableOnAssembly.subscribeActual(ObservableOnAssembly.java:41)
                                                         at io.reactivex.Observable.subscribe(Observable.java:10903)
                                                     	at io.reactivex.internal.operators.observable.ObservableDoOnEach.subscribeActual(ObservableDoOnEach.java:4
    

    Although, on API 25 RxJava2Debug won't crash the app and will log the exception correctly, but still, in such case the printed stacktrace is so huge that it fills up whole Android Logcat console and eventually breaks it with read: unexpected EOF! what also makes logging useless.

    Is it possible to create some constraints in RxJava2Debug that would prevent such issues?

    I have created the test case here. Let me know if you wouldn't be able to reproduce the issue.

    BTW - It's the exactly the same case I have reported in Traceur, which is an another attempt to do what RxJava2Debug does: https://github.com/T-Spoon/Traceur/issues/4

    opened by mkoslacz 11
Releases(1.4.0)
Owner
Mikel
Mikel
RxDisposableWatcher — find leaked subscriptions in RxJava code 🐞

Monitoring leaked Disposable subscriptions in RxJava code ??

Andrey Fomenkov 9 Oct 30, 2021
CovidTracker traces all the covid-19 cases all over the world.

CovidTracker Crona Tracker trace india covid-19 cases upto district level and can trace other countries cases too. It can also traces user's current l

Anuraj Jain 6 May 22, 2021
A Frida based tool that traces usage of the JNI API in Android apps.

jnitrace A Frida based tool to trace use of the JNI API in Android apps. Native libraries contained within Android Apps often make use of the JNI API

null 1.1k Jan 7, 2023
An application demoing meaningful motion on Android

Animate You'll find the supporting medium article for this project here! Animate is a simple application I quickly put together to demo meaningful mot

Joe Birch 3.1k Dec 30, 2022
How to apply meaningful and delightful motion in a sample Android app

Applying meaningful motion on Android How to apply meaningful and delightful motion in a sample Android app Read the complete post at https://medium.c

André Mion 166 Nov 12, 2022
A simple watchdog that detects Android ANR (Application Not Responding) error and throws a meaningful exception

ANR-WatchDog A simple watchdog that detects Android ANRs (Application Not Responding). Table of contents ANR-WatchDog Table of contents Why it exists

Salomon BRYS 2.6k Jan 9, 2023
How to apply meaningful and delightful motion in a sample Android app

Applying meaningful motion on Android How to apply meaningful and delightful motion in a sample Android app Read the complete post at https://medium.c

André Mion 167 Dec 19, 2022
How to apply meaningful and delightful motion in a sample Android app

Applying meaningful motion on Android How to apply meaningful and delightful motion in a sample Android app Read the complete post at https://medium.c

André Mion 167 Dec 19, 2022
Support extension to use Android ViewBinding quickly and smooth transform from kotlin-synthetic-extension.

ViewBinding Delegate Extension Support extension to use Android ViewBinding quickly and smooth transform from kotlin-synthetic-extension. Binding inst

Cuong V. Nguyen 3 Dec 13, 2021
UltraViewPager is an extension for ViewPager to provide multiple features in a single ViewPager.

UltraViewPager 中文文档 ProjectUltraViewPager is a ViewPager extension that encapsulates multiple features, mainly to provide a unified solution for multi

Alibaba 5k Dec 20, 2022
A Full-Stack mobile app, including Android & Server, Simple-Poem 简诗. You can write poem in graceful & traditional Chinese style.

JianShi 简诗 A Full-Stack mobile app, including Android side & Server side, Simple-Poem 简诗. You can write poem in graceful & traditional Chinese style.

wingjay 1.9k Jan 6, 2023
📒 NotyKT is a complete 💎Kotlin-stack (Backend + Android) 📱 application built to demonstrate the use of Modern development tools with best practices implementation🦸.

NotyKT ??️ NotyKT is the complete Kotlin-stack note taking ??️ application ?? built to demonstrate a use of Kotlin programming language in server-side

Shreyas Patil 1.4k Jan 4, 2023
📒 NotyKT is a complete 💎Kotlin-stack (Backend + Android) 📱 application built to demonstrate the use of Modern development tools with best practices implementation🦸.

NotyKT ??️ NotyKT is the complete Kotlin-stack note taking ??️ application ?? built to demonstrate a use of Kotlin programming language in server-side

Shreyas Patil 1.4k Jan 8, 2023
Okuki is a simple, hierarchical navigation bus and back stack for Android, with optional Rx bindings, and Toothpick DI integration.

Okuki A simple, hierarchical navigation bus and back stack for Android, with optional Rx bindings, and Toothpick integration for automatic dependency-

Cain Wong 143 Nov 25, 2022
A simple, customizable and easy to use swipeable view stack for Android.

SwipeStack A simple, customizable and easy to use swipeable view stack for Android. QuickStart Include the Gradle dependency dependencies { compil

Frederik Schweiger 1.5k Dec 30, 2022
A tinder like swipeable card stack component

AndroidSwipeableCardStack Change log: provide option to infinitly swipe in a loop card rotation setting card gravity setting undo animation Thanks for

wenchao jiang 824 Nov 10, 2022
An Android library introducing a stack of Views with the first item being flippable.

FlippableStackView An Android library introducing a stack of Views with the first item being flippable. Views inside the stack remain the aspect ratio

Bartek Lipinski 812 Dec 7, 2022
📒 NotyKT is a complete 💎Kotlin-stack (Backend + Android) 📱 application built to demonstrate the use of Modern development tools with best practices implementation🦸.

NotyKT ??️ NotyKT is the complete Kotlin-stack note taking ??️ application ?? built to demonstrate a use of Kotlin programming language in server-side

Shreyas Patil 1.4k Dec 26, 2022
Kotlin TodoMVC – full-stack Kotlin application demo

Kotlin full stack TodoMVC This project is an example implementation of the TodoMVC app written in Kotlin. More specifically, it's the Kotlin port of t

Gyula Voros 22 Oct 3, 2022