So I've had this issue for a long time where after using NP for a while and watching some number of videos NP would suddenly not load videos anymore. It would show the video page, it would load the comments, but in the video box on top it would just show the spinner and would sit like that infinitely. From that point on it would refuse to load any other videos as well, in exactly the same way (so it's not some weird issue with just that one video). The only solution would be to force-stop NP and restart. It would then work for a while and then refuse to load again.
This issue happens so randomly and is quite hard to reproduce consistently so I just learned to live with it, restarting NP as necessary. Today though I found this in my logcat shortly after it happened again:
E dalvikvm-heap: Out of memory on a 2570616-byte allocation.
I dalvikvm: "RxCachedThreadScheduler-44" daemon prio=5 tid=15 RUNNABLE
I dalvikvm: | group="main" sCount=0 dsCount=0 obj=0x433f9a90 self=0x61fc85f8
I dalvikvm: | sysTid=6575 nice=0 sched=0/0 cgrp=apps handle=1643731624
I dalvikvm: | state=R schedstat=( 1911832709 174470538 2801 ) utm=175 stm=15 core=3
I dalvikvm: at java.lang.String.<init>(String.java:~422)
I dalvikvm: at java.lang.AbstractStringBuilder.toString(AbstractStringBuilder.java:642)
I dalvikvm: at java.lang.StringBuilder.toString(StringBuilder.java:663)
I dalvikvm: at java.lang.String.replace(String.java:1396)
I dalvikvm: at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamExtractor.loadDecryptionCode(YoutubeStreamExtractor.java:750)
I dalvikvm: at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamExtractor.onFetchPage(YoutubeStreamExtractor.java:643)
I dalvikvm: at org.schabi.newpipe.extractor.Extractor.fetchPage(Extractor.java:56)
I dalvikvm: at org.schabi.newpipe.extractor.stream.StreamInfo.getInfo(StreamInfo.java:65)
I dalvikvm: at org.schabi.newpipe.extractor.stream.StreamInfo.getInfo(StreamInfo.java:61)
I dalvikvm: at org.schabi.newpipe.util.ExtractorHelper.lambda$getStreamInfo$3(ExtractorHelper.java:120)
I dalvikvm: at org.schabi.newpipe.util.-$$Lambda$ExtractorHelper$5fJcha6Sq5APJBLdG6osaJby-mc.call(lambda:-1)
I dalvikvm: at io.reactivex.internal.operators.single.SingleFromCallable.subscribeActual(SingleFromCallable.java:44)
I dalvikvm: at io.reactivex.Single.subscribe(Single.java:3438)
I dalvikvm: at io.reactivex.internal.operators.single.SingleDoOnSuccess.subscribeActual(SingleDoOnSuccess.java:35)
I dalvikvm: at io.reactivex.Single.subscribe(Single.java:3438)
I dalvikvm: at io.reactivex.internal.operators.maybe.MaybeFromSingle.subscribeActual(MaybeFromSingle.java:41)
I dalvikvm: at io.reactivex.Maybe.subscribe(Maybe.java:4154)
I dalvikvm: at io.reactivex.internal.operators.maybe.MaybeConcatArray$ConcatMaybeObserver.drain(MaybeConcatArray.java:153)
I dalvikvm: at io.reactivex.internal.operators.maybe.MaybeConcatArray$ConcatMaybeObserver.request(MaybeConcatArray.java:78)
I dalvikvm: at io.reactivex.internal.operators.flowable.FlowableElementAtMaybe$ElementAtSubscriber.onSubscribe(FlowableElementAtMaybe.java:66)
I dalvikvm: at io.reactivex.internal.operators.maybe.MaybeConcatArray.subscribeActual(MaybeConcatArray.java:42)
I dalvikvm: at io.reactivex.Flowable.subscribe(Flowable.java:14479)
I dalvikvm: at io.reactivex.internal.operators.flowable.FlowableElementAtMaybe.subscribeActual(FlowableElementAtMaybe.java:36)
I dalvikvm: at io.reactivex.Maybe.subscribe(Maybe.java:4154)
I dalvikvm: at io.reactivex.internal.operators.maybe.MaybeToSingle.subscribeActual(MaybeToSingle.java:46)
I dalvikvm: at io.reactivex.Single.subscribe(Single.java:3438)
I dalvikvm: at io.reactivex.internal.operators.single.SingleSubscribeOn$SubscribeOnObserver.run(SingleSubscribeOn.java:89)
I dalvikvm: at io.reactivex.Scheduler$DisposeTask.run(Scheduler.java:578)
I dalvikvm: at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:66)
I dalvikvm: at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:57)
I dalvikvm: at java.util.concurrent.FutureTask.run(FutureTask.java:237)
I dalvikvm: at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:152)
I dalvikvm: at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:265)
I dalvikvm: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
I dalvikvm: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
I dalvikvm: at java.lang.Thread.run(Thread.java:841)
I dalvikvm:
E class org.schabi.newpipe.App: RxJavaPlugins.ErrorHandler called with -> : throwable = [io.reactivex.exceptions.UndeliverableException]
E class org.schabi.newpipe.App: RxJavaPlugin: Undeliverable Exception received:
E class org.schabi.newpipe.App: java.lang.OutOfMemoryError
E class org.schabi.newpipe.App: at java.lang.String.<init>(String.java:422)
E class org.schabi.newpipe.App: at java.lang.AbstractStringBuilder.toString(AbstractStringBuilder.java:642)
E class org.schabi.newpipe.App: at java.lang.StringBuilder.toString(StringBuilder.java:663)
E class org.schabi.newpipe.App: at java.lang.String.replace(String.java:1396)
E class org.schabi.newpipe.App: at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamExtractor.loadDecryptionCode(YoutubeStreamExtractor.java:750)
E class org.schabi.newpipe.App: at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamExtractor.onFetchPage(YoutubeStreamExtractor.java:643)
E class org.schabi.newpipe.App: at org.schabi.newpipe.extractor.Extractor.fetchPage(Extractor.java:56)
E class org.schabi.newpipe.App: at org.schabi.newpipe.extractor.stream.StreamInfo.getInfo(StreamInfo.java:65)
E class org.schabi.newpipe.App: at org.schabi.newpipe.extractor.stream.StreamInfo.getInfo(StreamInfo.java:61)
E class org.schabi.newpipe.App: at org.schabi.newpipe.util.ExtractorHelper.lambda$getStreamInfo$3(ExtractorHelper.java:120)
E class org.schabi.newpipe.App: at org.schabi.newpipe.util.-$$Lambda$ExtractorHelper$5fJcha6Sq5APJBLdG6osaJby-mc.call(lambda)
E class org.schabi.newpipe.App: at io.reactivex.internal.operators.single.SingleFromCallable.subscribeActual(SingleFromCallable.java:44)
E class org.schabi.newpipe.App: at io.reactivex.Single.subscribe(Single.java:3438)
E class org.schabi.newpipe.App: at io.reactivex.internal.operators.single.SingleDoOnSuccess.subscribeActual(SingleDoOnSuccess.java:35)
E class org.schabi.newpipe.App: at io.reactivex.Single.subscribe(Single.java:3438)
E class org.schabi.newpipe.App: at io.reactivex.internal.operators.maybe.MaybeFromSingle.subscribeActual(MaybeFromSingle.java:41)
E class org.schabi.newpipe.App: at io.reactivex.Maybe.subscribe(Maybe.java:4154)
E class org.schabi.newpipe.App: at io.reactivex.internal.operators.maybe.MaybeConcatArray$ConcatMaybeObserver.drain(MaybeConcatArray.java:153)
E class org.schabi.newpipe.App: at io.reactivex.internal.operators.maybe.MaybeConcatArray$ConcatMaybeObserver.request(MaybeConcatArray.java:78)
E class org.schabi.newpipe.App: at io.reactivex.internal.operators.flowable.FlowableElementAtMaybe$ElementAtSubscriber.onSubscribe(FlowableElementAtMaybe.java:66)
E class org.schabi.newpipe.App: at io.reactivex.internal.operators.maybe.MaybeConcatArray.subscribeActual(MaybeConcatArray.java:42)
E class org.schabi.newpipe.App: at io.reactivex.Flowable.subscribe(Flowable.java:14479)
E class org.schabi.newpipe.App: at io.reactivex.internal.operators.flowable.FlowableElementAtMaybe.subscribeActual(FlowableElementAtMaybe.java:36)
E class org.schabi.newpipe.App: at io.reactivex.Maybe.subscribe(Maybe.java:4154)
E class org.schabi.newpipe.App: at io.reactivex.internal.operators.maybe.MaybeToSingle.subscribeActual(MaybeToSingle.java:46)
E class org.schabi.newpipe.App: at io.reactivex.Single.subscribe(Single.java:3438)
E class org.schabi.newpipe.App: at io.reactivex.internal.operators.single.SingleSubscribeOn$SubscribeOnObserver.run(SingleSubscribeOn.java:89)
E class org.schabi.newpipe.App: at io.reactivex.Scheduler$DisposeTask.run(Scheduler.java:578)
E class org.schabi.newpipe.App: at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:66)
E class org.schabi.newpipe.App: at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:57)
E class org.schabi.newpipe.App: at java.util.concurrent.FutureTask.run(FutureTask.java:237)
E class org.schabi.newpipe.App: at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:152)
E class org.schabi.newpipe.App: at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:265)
E class org.schabi.newpipe.App: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
E class org.schabi.newpipe.App: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
E class org.schabi.newpipe.App: at java.lang.Thread.run(Thread.java:841)
I'm hoping this might help eliminate this issue for good. Fingers crossed.
I don't believe this was fixed in 0.19.2, but it could have been. Could you see if this error is present in that update?
I'll be happy to update once 0.19.2 lands in F-Droid. I'll just say I've been having this issue through quite a lot of versions of NP so far. 馃檪
The memory on your system seems to be full. How much ram do you have?
It's a 2GB device. Shouldn't really be a problem, literally everything else is working flawlessly, including some moderately demanding games. Forgot to mention, I have noticed this a very long time ago and the issue spanned across many versions of NP and a few different devices, some having 3GB RAM or more. I feel it's more likely this is a memory leak within NP.
0.19.2 got to F-Droid and I updated a couple days ago. The same issue just happened again, literally 15 min ago. Looked at the log and it's still throwing the OutOfMemory error.
Oh, I see. Then this seems like a duplicate of #2373. I'll post your bugreport there, thanks for it!