Skip to content
This repository has been archived by the owner on Aug 19, 2023. It is now read-only.

IllegalStateException: Broadcast already finished #6

Closed
d4rken opened this issue Aug 28, 2018 · 3 comments
Closed

IllegalStateException: Broadcast already finished #6

d4rken opened this issue Aug 28, 2018 · 3 comments
Labels
bug Something isn't working bugsnag

Comments

@d4rken
Copy link
Member

d4rken commented Aug 28, 2018

Error in WakeLock v3

java.lang.IllegalStateException in LockCommandReceiver.kt:66
Broadcast already finished

View on Bugsnag

Stacktrace

LockCommandReceiver.kt:66 - eu.thedarken.wldonate.main.core.receiver.LockCommandReceiver$releaseAll$2.run

View full stacktrace

Created by Matthias Urhahn via Bugsnag

@d4rken d4rken added bugsnag bug Something isn't working labels Aug 28, 2018
@d4rken
Copy link
Member Author

d4rken commented Aug 28, 2018

java.lang.IllegalStateException: Broadcast already finished
        at android.content.BroadcastReceiver$PendingResult.sendFinished(BroadcastReceiver.java:410)
        at android.content.BroadcastReceiver$PendingResult.finish(BroadcastReceiver.java:389)
        at eu.thedarken.wldonate.main.core.receiver.LockCommandReceiver$releaseAll$2.run(LockCommandReceiver.kt:66)
        at io.reactivex.internal.operators.completable.CompletableDoFinally$DoFinallyObserver.runFinally(CompletableDoFinally.java:98)
        at io.reactivex.internal.operators.completable.CompletableDoFinally$DoFinallyObserver.onComplete(CompletableDoFinally.java:81)
        at io.reactivex.internal.operators.completable.CompletableSubscribeOn$SubscribeOnObserver.onComplete(CompletableSubscribeOn.java:79)
        at io.reactivex.internal.operators.completable.CompletablePeek$CompletableObserverImplementation.onComplete(CompletablePeek.java:116)
        at io.reactivex.internal.operators.completable.CompletableFromSingle$CompletableFromSingleObserver.onSuccess(CompletableFromSingle.java:51)
        at io.reactivex.internal.operators.single.SingleDoOnSuccess$DoOnSuccess.onSuccess(SingleDoOnSuccess.java:59)
        at io.reactivex.internal.operators.single.SingleMap$MapSingleObserver.onSuccess(SingleMap.java:64)
        at io.reactivex.internal.operators.observable.ObservableElementAtSingle$ElementAtObserver.onNext(ObservableElementAtSingle.java:91)
        at io.reactivex.internal.util.NotificationLite.accept(NotificationLite.java:246)
        at io.reactivex.subjects.BehaviorSubject$BehaviorDisposable.test(BehaviorSubject.java:570)
        at io.reactivex.subjects.BehaviorSubject$BehaviorDisposable.emitFirst(BehaviorSubject.java:531)
        at io.reactivex.subjects.BehaviorSubject.subscribeActual(BehaviorSubject.java:239)
        at io.reactivex.Observable.subscribe(Observable.java:12036)
        at io.reactivex.internal.operators.observable.ObservableElementAtSingle.subscribeActual(ObservableElementAtSingle.java:37)
        at io.reactivex.Single.subscribe(Single.java:3313)
        at io.reactivex.internal.operators.single.SingleMap.subscribeActual(SingleMap.java:34)
        at io.reactivex.Single.subscribe(Single.java:3313)
        at io.reactivex.internal.operators.single.SingleDoOnSuccess.subscribeActual(SingleDoOnSuccess.java:35)
        at io.reactivex.Single.subscribe(Single.java:3313)
        at io.reactivex.internal.operators.completable.CompletableFromSingle.subscribeActual(CompletableFromSingle.java:29)
        at io.reactivex.Completable.subscribe(Completable.java:1918)
        at io.reactivex.internal.operators.completable.CompletablePeek.subscribeActual(CompletablePeek.java:51)
        at io.reactivex.Completable.subscribe(Completable.java:1918)
        at io.reactivex.internal.operators.completable.CompletableSubscribeOn$SubscribeOnObserver.run(CompletableSubscribeOn.java:64)
        at io.reactivex.internal.schedulers.ScheduledDirectTask.call(ScheduledDirectTask.java:38)
        at io.reactivex.internal.schedulers.ScheduledDirectTask.call(ScheduledDirectTask.java:26)
        at java.util.concurrent.FutureTask.run(FutureTask.java:237)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:152)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:265)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
        at java.lang.Thread.run(Thread.java:841)

@d4rken
Copy link
Member Author

d4rken commented Aug 28, 2018

This issue has been linked to an error in Bugsnag
java.lang.IllegalStateException in com.android.launcher2.Launcher

@d4rken
Copy link
Member Author

d4rken commented Aug 28, 2018

It's a race condition against the broadcast receiver itself finishing before we goAsync(). So we need to goAsync() while still on the main thread instead of on Schedulers.computation().

@d4rken d4rken closed this as completed in 7485be9 Aug 28, 2018
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
bug Something isn't working bugsnag
Projects
None yet
Development

No branches or pull requests

1 participant