TeamNewPipe / NewPipe

A libre lightweight streaming front-end for Android.
https://newpipe.net
GNU General Public License v3.0
31.08k stars 3.01k forks source link

[YouTube] Crashes related to channels serialization (playing a video after some time, going to another app or to settings, ...) #11356

Open rancidfrog opened 1 month ago

rancidfrog commented 1 month ago

Checklist

Affected version

0.27.2

Steps to reproduce the bug

Play any video, after a while newpipe crashes

Expected behavior

Video playback

Actual behavior

Newpipe crashes, Before newpipe used to throw errors but playbagk continued, now on error newpipe crashes

Screenshots/Screen recordings

No response

Logs

Exception

android.os.BadParcelableException: Parcelable encountered IOException writing serializable object (name = org.schabi.newpipe.extractor.channel.ChannelInfo)
    at android.os.Parcel.writeSerializable(Parcel.java:2751)
    at android.os.Parcel.writeValue(Parcel.java:2517)
    at android.os.Parcel.writeValue(Parcel.java:2316)
    at android.os.Parcel.writeArrayMapInternal(Parcel.java:1265)
    at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1802)
    at android.os.Bundle.writeToParcel(Bundle.java:1389)
    at android.os.Parcel.writeBundle(Parcel.java:1334)
    at android.os.Parcel.writeValue(Parcel.java:2433)
    at android.os.Parcel.writeValue(Parcel.java:2323)
    at android.os.Parcel.writeArrayMapInternal(Parcel.java:1265)
    at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1802)
    at android.os.Bundle.writeToParcel(Bundle.java:1389)
    at android.os.Parcel.writeBundle(Parcel.java:1334)
    at android.os.Parcel.writeValue(Parcel.java:2433)
    at android.os.Parcel.writeValue(Parcel.java:2323)
    at android.os.Parcel.writeArrayMapInternal(Parcel.java:1265)
    at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1802)
    at android.os.Bundle.writeToParcel(Bundle.java:1389)
    at android.os.Parcel.writeBundle(Parcel.java:1334)
    at android.os.Parcel.writeValue(Parcel.java:2433)
    at android.os.Parcel.writeValue(Parcel.java:2323)
    at android.os.Parcel.writeArrayMapInternal(Parcel.java:1265)
    at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1802)
    at android.os.Bundle.writeToParcel(Bundle.java:1389)
    at android.os.Parcel.writeBundle(Parcel.java:1334)
    at android.os.Parcel.writeValue(Parcel.java:2433)
    at android.os.Parcel.writeValue(Parcel.java:2323)
    at android.os.Parcel.writeArrayMapInternal(Parcel.java:1265)
    at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1802)
    at android.os.Bundle.writeToParcel(Bundle.java:1389)
    at android.os.Parcel.writeBundle(Parcel.java:1334)
    at android.os.Parcel.writeValue(Parcel.java:2433)
    at android.os.Parcel.writeValue(Parcel.java:2323)
    at android.os.Parcel.writeArrayMapInternal(Parcel.java:1265)
    at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1802)
    at android.os.Bundle.writeToParcel(Bundle.java:1389)
    at android.os.Parcel.writeBundle(Parcel.java:1334)
    at android.os.Parcel.writeValue(Parcel.java:2433)
    at android.os.Parcel.writeValue(Parcel.java:2323)
    at android.os.BaseBundle.dumpStats(BaseBundle.java:1874)
    at android.os.BaseBundle.dumpStats(BaseBundle.java:1911)
    at android.app.servertransaction.PendingTransactionActions$StopInfo.collectBundleStates(PendingTransactionActions.java:142)
    at android.app.servertransaction.PendingTransactionActions$StopInfo.run(PendingTransactionActions.java:158)
    at android.os.Handler.handleCallback(Handler.java:942)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loopOnce(Looper.java:201)
    at android.os.Looper.loop(Looper.java:288)
    at android.app.ActivityThread.main(ActivityThread.java:7924)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)
Caused by: java.io.NotSerializableException: org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeChannelExtractor
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1240)
    at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1604)
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1565)
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1488)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1234)
    at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1604)
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1565)
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1488)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1234)
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:354)
    at java.util.ArrayList.writeObject(ArrayList.java:762)
    at java.lang.reflect.Method.invoke(Native Method)
    at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:1036)
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1552)
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1488)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1234)
    at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1604)
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1565)
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1488)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1234)
    at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1604)
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1565)
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1488)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1234)
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:354)
    at android.os.Parcel.writeSerializable(Parcel.java:2746)
    ... 50 more


Affected Android/Custom ROM version

Android 13 - Lineageos 20

Affected device model

Xiaomi Mi MIX 2S

Additional information

No response

dogtopus commented 1 month ago

I'm seeing the same exception consistently when I was trying to shuffle large YouTube playlists (e.g. https://www.youtube.com/watch?v=NC2blnl0WTE&list=PL8mG-RkN2uTx9GY3silWiMf2W2EJ9sTgx). I specifically did the following:

I think this was introduced only after the 0.27.2 hotfix.

(Despite the above consistent reproduction steps, I think the root cause could still be intermittent, as I'm also occasionally seeing it even when I'm not doing the above steps. My guess is that shuffling large amount of videos just increase the chance of getting a bad one, thus making the reproduction consistent. A wild guess: YouTube AB testing something again?)

vshc commented 1 month ago

I experience the same issue, with the same exception. In my case:

UPDATE: When I played the same video again after few hours, it worked fine and didn't crash the application.

Also one thing worth noting - I had such problem with videos only from a single channel (probably with all of them, but checked only a few).

KanNinChun commented 1 month ago

In my case it will crash the app when i attempt to open the playlist tab after i click play all video, it will just crash the app if you try to get to the playlist tab

`## Exception

android.os.BadParcelableException: Parcelable encountered IOException writing serializable object (name = org.schabi.newpipe.extractor.channel.ChannelInfo)
    at android.os.Parcel.writeSerializable(Parcel.java:2763)
    at android.os.Parcel.writeValue(Parcel.java:2529)
    at android.os.Parcel.writeValue(Parcel.java:2328)
    at android.os.Parcel.writeArrayMapInternal(Parcel.java:1277)
    at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1802)
    at android.os.Bundle.writeToParcel(Bundle.java:1362)
    at android.os.Parcel.writeBundle(Parcel.java:1346)
    at android.os.Parcel.writeValue(Parcel.java:2445)
    at android.os.Parcel.writeValue(Parcel.java:2335)
    at android.os.Parcel.writeArrayMapInternal(Parcel.java:1277)
    at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1802)
    at android.os.Bundle.writeToParcel(Bundle.java:1362)
    at android.os.Parcel.writeBundle(Parcel.java:1346)
    at android.os.Parcel.writeValue(Parcel.java:2445)
    at android.os.Parcel.writeValue(Parcel.java:2335)
    at android.os.Parcel.writeArrayMapInternal(Parcel.java:1277)
    at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1802)
    at android.os.Bundle.writeToParcel(Bundle.java:1362)
    at android.os.Parcel.writeBundle(Parcel.java:1346)
    at android.os.Parcel.writeValue(Parcel.java:2445)
    at android.os.Parcel.writeValue(Parcel.java:2335)
    at android.os.Parcel.writeArrayMapInternal(Parcel.java:1277)
    at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1802)
    at android.os.Bundle.writeToParcel(Bundle.java:1362)
    at android.os.Parcel.writeBundle(Parcel.java:1346)
    at android.os.Parcel.writeValue(Parcel.java:2445)
    at android.os.Parcel.writeValue(Parcel.java:2335)
    at android.os.Parcel.writeArrayMapInternal(Parcel.java:1277)
    at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1802)
    at android.os.Bundle.writeToParcel(Bundle.java:1362)
    at android.os.Parcel.writeBundle(Parcel.java:1346)
    at android.os.Parcel.writeValue(Parcel.java:2445)
    at android.os.Parcel.writeValue(Parcel.java:2335)
    at android.os.Parcel.writeArrayMapInternal(Parcel.java:1277)
    at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1802)
    at android.os.Bundle.writeToParcel(Bundle.java:1362)
    at android.os.Parcel.writeBundle(Parcel.java:1346)
    at android.os.Parcel.writeValue(Parcel.java:2445)
    at android.os.Parcel.writeValue(Parcel.java:2335)
    at android.os.BaseBundle.dumpStats(BaseBundle.java:1874)
    at android.os.BaseBundle.dumpStats(BaseBundle.java:1911)
    at android.app.servertransaction.PendingTransactionActions$StopInfo.run(PendingTransactionActions.java:150)
    at android.os.Handler.handleCallback(Handler.java:942)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loopOnce(Looper.java:226)
    at android.os.Looper.loop(Looper.java:313)
    at android.app.ActivityThread.main(ActivityThread.java:8762)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:604)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1067)
Caused by: java.io.NotSerializableException: org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeChannelExtractor
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1240)
    at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1604)
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1565)
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1488)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1234)
    at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1604)
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1565)
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1488)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1234)
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:354)
    at java.util.ArrayList.writeObject(ArrayList.java:762)
    at java.lang.reflect.Method.invoke(Native Method)
    at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:1036)
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1552)
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1488)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1234)
    at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1604)
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1565)
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1488)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1234)
    at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1604)
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1565)
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1488)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1234)
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:354)
    at android.os.Parcel.writeSerializable(Parcel.java:2758)
    ... 49 more


`

levik-opsilient commented 1 month ago

Having the same issues on a pixel 3 Android 11

jensli commented 1 month ago

I have the same problem. Started after upgrading from NewPipe 0.27.1 to 0.27.2. Android 8.0.0 - 26.

Green0wl commented 1 month ago

same problem. as @jensli mentioned, UI crash is observed when switching from version 0.27.1 to 0.27.2. probably, it can be somehow related to the fact that youtube updates something at itself. not sure if the bug is between versions 0.27.1 and 0.27.2, because in version 0.27.1 videos did not start at all, although before the changes in youtube, even in version 0.27.1 everything worked correctly.

I also observe what @vshc said. this crash mostly happens when I turn off the screen or switch from one application to another. at the same time, sometimes even with long screen off times, everything continues to work correctly. i think it might be due to memory freeing in android when another application is launched. then, with long screen off times, even if everything works, it could be explained by the fact that android kept the application data in memory all the time and didn't unload it until I turned the screen back on.

jensli commented 1 month ago

The following are my observations and speculations about the problem. Maybe they can contribute to find the cause and fix it.

Basic observations

The Android framework tries to serialize a ChannelInfo object, which it turn references a YoutubeChannelExtractor. YoutubeChannelExtractor is not serializable so the operations fails.

It seems reasonable that YoutubeChannelExtractor is not serializable. It seems to be a service kind of class, not a data-holder kind of class. Because of this, it is probably by mistake that YoutubeChannelExtractor is serialized.

The bug was probably introduced in the changes between version 2.4.1 and 2.4.2:

https://github.com/TeamNewPipe/NewPipeExtractor/compare/v0.24.1...v0.24.2

What could be the mistake?

The following is one idea:

ChannelInfo contains ListLinkHandler objects in the field tabs.

The tabs field gets populated with a ReadyChannelTabListLinkHandler in YoutubeChannelExtractor#getTabsForNonAgeRestrictedChannels with this code:

https://github.com/TeamNewPipe/NewPipeExtractor/blob/v0.24.2/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeChannelExtractor.java#L434

tabs.add(0, new ReadyChannelTabListLinkHandler(
        tabUrl,
        channelId,
        ChannelTabs.VIDEOS,
        (service, linkHandler) -> new VideosTabExtractor(
                service, linkHandler, tabRenderer, channelHeader,
                name, id, url)));

channelHeader is a field of YoutubeChannelExtractor. Therefor them lambda object will contain a reference to the enclosing YoutubeChannelExtractor.

Bingo! That is a possible chain of references from ChannelInfo (the object being serialized) to YoutubeChannelExtractor (the object that will trigger the error if it is serialized.

The whole chain looks like this:

ChannelInfo where the tabs field references...

...the object ReadyChannelTabListLinkHandler where the extractorBuilder field references...

...a lambda implementing ChannelTabExtractorBuilder which has a filed for the capture YoutubeChannelExtractor, to be able to access channelHeader.

When the framework serializes ChannelInfo it follows thoses references and tries to serialize YoutubeChannelExtractor which triggers NotSerializableException.

Potintial fix

Create a local variable that contains channelHeader to avoid having the whole YoutubeChannelExtractor

// Local variable to avoid that the lambda captures YoutubeChannelExtractor
Optional<ChannelHeader> localChannelHeader = channelHeader; 
tabs.add(0, new ReadyChannelTabListLinkHandler(
        tabUrl,
        channelId,
        ChannelTabs.VIDEOS,
        (service, linkHandler) -> new VideosTabExtractor(
                service, linkHandler, tabRenderer, localChannelHeader,
                name, id, url)));

Edit: On a second though this exact fix doesn't work because Optional is not serializable. But with some slight variation it can be made to work.

Disclaimer

I'm not at all sure that the above reasoning is correct. I have not tried it. It is based only on reading the code at GitHub. But maybe!

levik-opsilient commented 1 month ago

it's interesting, but when using SoundCloud it doesn't crash, only youtube

On Thu, Aug 1, 2024 at 11:01 AM Jens Lidestrom @.***> wrote:

I have the same problem. Started after upgrading from NewPipe 0.27.1 to 0.27.2. Android 8.0.0 - 26.

— Reply to this email directly, view it on GitHub https://github.com/TeamNewPipe/NewPipe/issues/11356#issuecomment-2263294759, or unsubscribe https://github.com/notifications/unsubscribe-auth/AOGIUVW5BPRFCWPIPGJK7P3ZPJESZAVCNFSM6AAAAABLSRK34KVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDENRTGI4TINZVHE . You are receiving this because you commented.Message ID: @.***>

WagnerGMD commented 1 month ago

Finally I had found something with the help of Scoop. Because it's match with the first line ("User Action: ui error") but if you want a copy from the crash log you will need to explain me how to proceed from my PC ? As reminder, I confirm my knowledge about ADB is just basic.

levik-opsilient commented 1 month ago

Exception

java.lang.RuntimeException: Parcelable encountered IOException writing serializable object (name = org.schabi.newpipe.extractor.channel.ChannelInfo)
    at android.os.Parcel.writeSerializable(Parcel.java:2113)
    at android.os.Parcel.writeValue(Parcel.java:1883)
    at android.os.Parcel.writeArrayMapInternal(Parcel.java:975)
    at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1620)
    at android.os.Bundle.writeToParcel(Bundle.java:1303)
    at android.os.Parcel.writeBundle(Parcel.java:1044)
    at android.os.Parcel.writeValue(Parcel.java:1801)
    at android.os.Parcel.writeArrayMapInternal(Parcel.java:975)
    at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1620)
    at android.os.Bundle.writeToParcel(Bundle.java:1303)
    at android.os.Parcel.writeBundle(Parcel.java:1044)
    at android.os.Parcel.writeValue(Parcel.java:1801)
    at android.os.Parcel.writeArrayMapInternal(Parcel.java:975)
    at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1620)
    at android.os.Bundle.writeToParcel(Bundle.java:1303)
    at android.os.Parcel.writeBundle(Parcel.java:1044)
    at android.os.Parcel.writeValue(Parcel.java:1801)
    at android.os.Parcel.writeArrayMapInternal(Parcel.java:975)
    at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1620)
    at android.os.Bundle.writeToParcel(Bundle.java:1303)
    at android.os.Parcel.writeBundle(Parcel.java:1044)
    at android.os.Parcel.writeValue(Parcel.java:1801)
    at android.os.Parcel.writeArrayMapInternal(Parcel.java:975)
    at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1620)
    at android.os.Bundle.writeToParcel(Bundle.java:1303)
    at android.os.Parcel.writeBundle(Parcel.java:1044)
    at android.os.Parcel.writeValue(Parcel.java:1801)
    at android.os.Parcel.writeArrayMapInternal(Parcel.java:975)
    at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1620)
    at android.os.Bundle.writeToParcel(Bundle.java:1303)
    at android.os.Parcel.writeBundle(Parcel.java:1044)
    at android.os.Parcel.writeValue(Parcel.java:1801)
    at android.os.Parcel.writeArrayMapInternal(Parcel.java:975)
    at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1620)
    at android.os.Bundle.writeToParcel(Bundle.java:1303)
    at android.app.IActivityTaskManager$Stub$Proxy.activityStopped(IActivityTaskManager.java:4389)
    at android.app.servertransaction.PendingTransactionActions$StopInfo.run(PendingTransactionActions.java:145)
    at android.os.Handler.handleCallback(Handler.java:938)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:223)
    at android.app.ActivityThread.main(ActivityThread.java:7664)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
Caused by: java.io.NotSerializableException: org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeChannelExtractor
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1240)
    at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1604)
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1565)
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1488)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1234)
    at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1604)
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1565)
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1488)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1234)
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:354)
    at java.util.ArrayList.writeObject(ArrayList.java:762)
    at java.lang.reflect.Method.invoke(Native Method)
    at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:1036)
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1552)
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1488)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1234)
    at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1604)
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1565)
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1488)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1234)
    at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1604)
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1565)
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1488)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1234)
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:354)
    at android.os.Parcel.writeSerializable(Parcel.java:2108)
    ... 43 more


opusforlife2 commented 1 month ago

@WagnerGMD Look at the description. There is already a crash report available, so no need (unless a dev specifically asks for it).

WagnerGMD commented 1 month ago

@opusforlife2 Ok I will wait apparently it could be different (unless it's another one ? I can't tell).

For the record : I had disable all the animation (inside the settings of Android 12 as developer). Perhaps it's the delay ? Because my history is bigger and apparenlty I haven't met this bug since these changes (3 at total). What about the rotation ? Perhaps I'm wrong feeling but I believe there is something to deep (specially when we use the fullscreen).

GittyDoe commented 1 month ago

Don't know how to report issue but I'm having this one

Exception

org.schabi.newpipe.extractor.exceptions.ContentNotAvailableException: Got error: "Sign in to confirm that you're not a bot"
    at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamExtractor.checkPlayabilityStatus(YoutubeStreamExtractor.java:898)
    at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamExtractor.onFetchPage(YoutubeStreamExtractor.java:784)
    at org.schabi.newpipe.extractor.Extractor.fetchPage(Extractor.java:60)
    at org.schabi.newpipe.extractor.stream.StreamInfo.getInfo(StreamInfo.java:77)
    at org.schabi.newpipe.extractor.stream.StreamInfo.getInfo(StreamInfo.java:72)
    at org.schabi.newpipe.util.ExtractorHelper.lambda$getStreamInfo$3(ExtractorHelper.java:118)
    at org.schabi.newpipe.util.ExtractorHelper.$r8$lambda$YTHJjScxCJNO1LTCqs3IKy35iyY(ExtractorHelper.java:0)
    at org.schabi.newpipe.util.ExtractorHelper$$ExternalSyntheticLambda3.call(R8$$SyntheticClass:0)
    at io.reactivex.rxjava3.internal.operators.single.SingleFromCallable.subscribeActual(SingleFromCallable.java:43)
    at io.reactivex.rxjava3.core.Single.subscribe(Single.java:4855)
    at io.reactivex.rxjava3.internal.operators.single.SingleDoOnSuccess.subscribeActual(SingleDoOnSuccess.java:35)
    at io.reactivex.rxjava3.core.Single.subscribe(Single.java:4855)
    at io.reactivex.rxjava3.internal.operators.maybe.MaybeFromSingle.subscribeActual(MaybeFromSingle.java:41)
    at io.reactivex.rxjava3.core.Maybe.subscribe(Maybe.java:5377)
    at io.reactivex.rxjava3.internal.operators.maybe.MaybeConcatArray$ConcatMaybeObserver.drain(MaybeConcatArray.java:153)
    at io.reactivex.rxjava3.internal.operators.maybe.MaybeConcatArray$ConcatMaybeObserver.request(MaybeConcatArray.java:78)
    at io.reactivex.rxjava3.internal.operators.flowable.FlowableElementAtMaybe$ElementAtSubscriber.onSubscribe(FlowableElementAtMaybe.java:66)
    at io.reactivex.rxjava3.internal.operators.maybe.MaybeConcatArray.subscribeActual(MaybeConcatArray.java:42)
    at io.reactivex.rxjava3.core.Flowable.subscribe(Flowable.java:16144)
    at io.reactivex.rxjava3.internal.operators.flowable.FlowableElementAtMaybe.subscribeActual(FlowableElementAtMaybe.java:36)
    at io.reactivex.rxjava3.core.Maybe.subscribe(Maybe.java:5377)
    at io.reactivex.rxjava3.internal.operators.maybe.MaybeToSingle.subscribeActual(MaybeToSingle.java:46)
    at io.reactivex.rxjava3.core.Single.subscribe(Single.java:4855)
    at io.reactivex.rxjava3.internal.operators.single.SingleSubscribeOn$SubscribeOnObserver.run(SingleSubscribeOn.java:89)
    at io.reactivex.rxjava3.core.Scheduler$DisposeTask.run(Scheduler.java:644)
    at io.reactivex.rxjava3.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:65)
    at io.reactivex.rxjava3.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:56)
    at java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:307)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
    at java.lang.Thread.run(Thread.java:1012)


opusforlife2 commented 1 month ago

@WagnerGMD It has nothing to do with any of those settings.

berrydzhobs commented 1 month ago

For now it. Stopped playing videos

T-rex2017 commented 1 month ago

At least for me it only occurs when i try to play video from a playlist in the background and switch to another app or turn off screen , when i play it back from history or open the individual video and push to bg , there seems to be a non problem

levik-opsilient commented 1 month ago

Same thing, It won't crash when playing the link directly, only when playing from a subscription.

On Sat, Aug 17, 2024 at 5:37 PM T-rex2017 @.***> wrote:

At least for me it only occurs when i try to play video from a playlist in the background and switch to another app or turn off screen , when i play it back from history or open the individual video and push to bg , there seems to be a non problem

— Reply to this email directly, view it on GitHub https://github.com/TeamNewPipe/NewPipe/issues/11356#issuecomment-2294992456, or unsubscribe https://github.com/notifications/unsubscribe-auth/AOGIUVV7I6CMCQJ5MGRWYALZR67B3AVCNFSM6AAAAABLSRK34KVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDEOJUHE4TENBVGY . You are receiving this because you commented.Message ID: @.***>

kirisakow commented 1 week ago

@ShareASmile told me to reference my issue #11510 here

Steps to reproduce the bug

  1. Use NewPipe to open any YouTube channel home page.
  2. Go to the "About" tab.
  3. Use the top right "<" (share) pictogram and choose where to share.

Consequences

NewPipe consistently crashes with following crash report:-

Logs

Exception

java.lang.RuntimeException: Parcelable encountered IOException writing serializable object (name = org.schabi.newpipe.extractor.channel.ChannelInfo)
    at android.os.Parcel.writeSerializable(Parcel.java:1720)
    at android.os.Parcel.writeValue(Parcel.java:1668)
    at android.os.Parcel.writeArrayMapInternal(Parcel.java:875)
    at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1583)
    at android.os.Bundle.writeToParcel(Bundle.java:1233)
    at android.os.Parcel.writeBundle(Parcel.java:915)
    at android.os.Parcel.writeValue(Parcel.java:1586)
    at android.os.Parcel.writeArrayMapInternal(Parcel.java:875)
    at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1583)
    at android.os.Bundle.writeToParcel(Bundle.java:1233)
    at android.os.Parcel.writeBundle(Parcel.java:915)
    at android.os.Parcel.writeValue(Parcel.java:1586)
    at android.os.Parcel.writeArrayMapInternal(Parcel.java:875)
    at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1583)
    at android.os.Bundle.writeToParcel(Bundle.java:1233)
    at android.os.Parcel.writeBundle(Parcel.java:915)
    at android.os.Parcel.writeValue(Parcel.java:1586)
    at android.os.Parcel.writeArrayMapInternal(Parcel.java:875)
    at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1583)
    at android.os.Bundle.writeToParcel(Bundle.java:1233)
    at android.os.Parcel.writeBundle(Parcel.java:915)
    at android.os.Parcel.writeValue(Parcel.java:1586)
    at android.os.Parcel.writeArrayMapInternal(Parcel.java:875)
    at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1583)
    at android.os.Bundle.writeToParcel(Bundle.java:1233)
    at android.os.Parcel.writeBundle(Parcel.java:915)
    at android.os.Parcel.writeValue(Parcel.java:1586)
    at android.os.Parcel.writeArrayMapInternal(Parcel.java:875)
    at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1583)
    at android.os.Bundle.writeToParcel(Bundle.java:1233)
    at android.os.Parcel.writeBundle(Parcel.java:915)
    at android.os.Parcel.writeValue(Parcel.java:1586)
    at android.os.Parcel.writeArrayMapInternal(Parcel.java:875)
    at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1583)
    at android.os.Bundle.writeToParcel(Bundle.java:1233)
    at android.app.IActivityManager$Stub$Proxy.activityStopped(IActivityManager.java:3986)
    at android.app.servertransaction.PendingTransactionActions$StopInfo.run(PendingTransactionActions.java:144)
    at android.os.Handler.handleCallback(Handler.java:907)
    at android.os.Handler.dispatchMessage(Handler.java:105)
    at android.os.Looper.loop(Looper.java:216)
    at android.app.ActivityThread.main(ActivityThread.java:7625)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:524)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:987)
Caused by: java.io.NotSerializableException: org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeChannelExtractor
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1240)
    at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1604)
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1565)
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1488)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1234)
    at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1604)
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1565)
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1488)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1234)
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:354)
    at java.util.ArrayList.writeObject(ArrayList.java:762)
    at java.lang.reflect.Method.invoke(Native Method)
    at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:1038)
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1552)
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1488)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1234)
    at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1604)
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1565)
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1488)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1234)
    at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1604)
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1565)
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1488)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1234)
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:354)
    at android.os.Parcel.writeSerializable(Parcel.java:1715)
    ... 43 more


noone74 commented 3 days ago

Exception

org.schabi.newpipe.player.mediasource.FailedMediaSource$StreamInfoLoadException: org.schabi.newpipe.extractor.stream.StreamInfo$StreamExtractException: Could not get any stream. See error variable to get further details.
    at org.schabi.newpipe.player.playback.MediaSourceManager.lambda$getLoadedMediaSource$7(MediaSourceManager.java:448)
    at org.schabi.newpipe.player.playback.MediaSourceManager.$r8$lambda$7wkrzYpwfZdms79okpk8_MCaW4U(MediaSourceManager.java:0)
    at org.schabi.newpipe.player.playback.MediaSourceManager$$ExternalSyntheticLambda5.apply(R8$$SyntheticClass:0)
    at io.reactivex.rxjava3.internal.operators.single.SingleOnErrorReturn$OnErrorReturn.onError(SingleOnErrorReturn.java:55)
    at io.reactivex.rxjava3.internal.operators.single.SingleMap$MapSingleObserver.onError(SingleMap.java:70)
    at io.reactivex.rxjava3.internal.operators.single.SingleDoOnError$DoOnError.onError(SingleDoOnError.java:63)
    at io.reactivex.rxjava3.internal.operators.single.SingleSubscribeOn$SubscribeOnObserver.onError(SingleSubscribeOn.java:73)
    at io.reactivex.rxjava3.internal.operators.maybe.MaybeToSingle$ToSingleMaybeSubscriber.onError(MaybeToSingle.java:89)
    at io.reactivex.rxjava3.internal.operators.flowable.FlowableElementAtMaybe$ElementAtSubscriber.onError(FlowableElementAtMaybe.java:94)
    at io.reactivex.rxjava3.internal.operators.maybe.MaybeConcatArray$ConcatMaybeObserver.onError(MaybeConcatArray.java:100)
    at io.reactivex.rxjava3.internal.operators.maybe.MaybeFromSingle$FromSingleObserver.onError(MaybeFromSingle.java:82)
    at io.reactivex.rxjava3.internal.operators.single.SingleDoOnSuccess$DoOnSuccess.onError(SingleDoOnSuccess.java:65)
    at io.reactivex.rxjava3.internal.operators.single.SingleFromCallable.subscribeActual(SingleFromCallable.java:47)
    at io.reactivex.rxjava3.core.Single.subscribe(Single.java:4855)
    at io.reactivex.rxjava3.internal.operators.single.SingleDoOnSuccess.subscribeActual(SingleDoOnSuccess.java:35)
    at io.reactivex.rxjava3.core.Single.subscribe(Single.java:4855)
    at io.reactivex.rxjava3.internal.operators.maybe.MaybeFromSingle.subscribeActual(MaybeFromSingle.java:41)
    at io.reactivex.rxjava3.core.Maybe.subscribe(Maybe.java:5377)
    at io.reactivex.rxjava3.internal.operators.maybe.MaybeConcatArray$ConcatMaybeObserver.drain(MaybeConcatArray.java:153)
    at io.reactivex.rxjava3.internal.operators.maybe.MaybeConcatArray$ConcatMaybeObserver.request(MaybeConcatArray.java:78)
    at io.reactivex.rxjava3.internal.operators.flowable.FlowableElementAtMaybe$ElementAtSubscriber.onSubscribe(FlowableElementAtMaybe.java:66)
    at io.reactivex.rxjava3.internal.operators.maybe.MaybeConcatArray.subscribeActual(MaybeConcatArray.java:42)
    at io.reactivex.rxjava3.core.Flowable.subscribe(Flowable.java:16144)
    at io.reactivex.rxjava3.internal.operators.flowable.FlowableElementAtMaybe.subscribeActual(FlowableElementAtMaybe.java:36)
    at io.reactivex.rxjava3.core.Maybe.subscribe(Maybe.java:5377)
    at io.reactivex.rxjava3.internal.operators.maybe.MaybeToSingle.subscribeActual(MaybeToSingle.java:46)
    at io.reactivex.rxjava3.core.Single.subscribe(Single.java:4855)
    at io.reactivex.rxjava3.internal.operators.single.SingleSubscribeOn$SubscribeOnObserver.run(SingleSubscribeOn.java:89)
    at io.reactivex.rxjava3.core.Scheduler$DisposeTask.run(Scheduler.java:644)
    at io.reactivex.rxjava3.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:65)
    at io.reactivex.rxjava3.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:56)
    at java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:307)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
    at java.lang.Thread.run(Thread.java:1012)
Caused by: org.schabi.newpipe.extractor.stream.StreamInfo$StreamExtractException: Could not get any stream. See error variable to get further details.
    at org.schabi.newpipe.extractor.stream.StreamInfo.extractStreams(StreamInfo.java:171)
    at org.schabi.newpipe.extractor.stream.StreamInfo.getInfo(StreamInfo.java:81)
    at org.schabi.newpipe.extractor.stream.StreamInfo.getInfo(StreamInfo.java:72)
    at org.schabi.newpipe.util.ExtractorHelper.lambda$getStreamInfo$3(ExtractorHelper.java:118)
    at org.schabi.newpipe.util.ExtractorHelper.$r8$lambda$YTHJjScxCJNO1LTCqs3IKy35iyY(ExtractorHelper.java:0)
    at org.schabi.newpipe.util.ExtractorHelper$$ExternalSyntheticLambda3.call(R8$$SyntheticClass:0)
    at io.reactivex.rxjava3.internal.operators.single.SingleFromCallable.subscribeActual(SingleFromCallable.java:43)
    ... 23 more


ethanc8 commented 3 days ago

I have not experienced this issue on the following channels, despite playing them in the background very often:

I have encountered crashes while playing from playlists on these channels, but not when playing directly from the videos list:

I have encountered crashes while playing directly from the videos list on these channels:

These crashes only occur upon backgrounding or putting the phone to sleep.