polymorphicshade / Tubular

A fork of NewPipe that implements SponsorBlock and ReturnYouTubeDislike.
GNU General Public License v3.0
1.33k stars 35 forks source link

App consistently crashes when loading video despite killing it multiple times #102

Closed flAmEDIEU closed 3 weeks ago

flAmEDIEU commented 3 weeks ago

Checklist

Affected version

0.27.0

Steps to reproduce the bug

  1. Try to launch a video
  2. Crash

Expected behavior

  1. Launch a video
  2. Watch said video

Actual behavior

No response

Screenshots/Recordings

No response

Logs

Exception

java.lang.RuntimeException: Unable to stop service org.schabi.newpipe.player.PlayerService@cbf1f55: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.google.android.exoplayer2.ext.mediasession.MediaSessionConnector.setCustomActionProviders(com.google.android.exoplayer2.ext.mediasession.MediaSessionConnector$CustomActionProvider[])' on a null object reference
    at android.app.ActivityThread.handleStopService(ActivityThread.java:5318)
    at android.app.ActivityThread.-$$Nest$mhandleStopService(Unknown Source:0)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2539)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loopOnce(Looper.java:230)
    at android.os.Looper.loop(Looper.java:319)
    at android.app.ActivityThread.main(ActivityThread.java:8893)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:608)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1103)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.google.android.exoplayer2.ext.mediasession.MediaSessionConnector.setCustomActionProviders(com.google.android.exoplayer2.ext.mediasession.MediaSessionConnector$CustomActionProvider[])' on a null object reference
    at org.schabi.newpipe.player.mediasession.MediaSessionPlayerUi.updateMediaSessionActions(MediaSessionPlayerUi.java:215)
    at org.schabi.newpipe.player.mediasession.MediaSessionPlayerUi.onMetadataChanged(MediaSessionPlayerUi.java:282)
    at org.schabi.newpipe.player.Player.lambda$updateMetadataWith$24(Player.java:1965)
    at org.schabi.newpipe.player.Player.$r8$lambda$KYxtUfH3uL0EspE7uZXU5RuyulI(Player.java:0)
    at org.schabi.newpipe.player.Player$$ExternalSyntheticLambda54.accept(R8$$SyntheticClass:0)
    at j$.util.AbstractList$RandomAccessSpliterator.forEachRemaining(Unknown Source:19)
    at j$.util.stream.ReferencePipeline$Head.forEachOrdered(Unknown Source:10)
    at org.schabi.newpipe.player.ui.PlayerUiList.call(PlayerUiList.java:88)
    at org.schabi.newpipe.player.Player.updateMetadataWith(Player.java:1965)
    at org.schabi.newpipe.player.Player.lambda$onEvents$15(Player.java:1451)
    at org.schabi.newpipe.player.Player.$r8$lambda$Eed-B0TnQ_k8Al2mcJ0rZUnzA4o(Player.java:0)
    at org.schabi.newpipe.player.Player$$ExternalSyntheticLambda44.accept(R8$$SyntheticClass:0)
    at j$.util.Optional.ifPresent(Unknown Source:4)
    at org.schabi.newpipe.player.Player.lambda$onEvents$16(Player.java:1445)
    at org.schabi.newpipe.player.Player.$r8$lambda$GPJl-DFJZV0t5Qs0X5bQ_Y1vCXM(Player.java:0)
    at org.schabi.newpipe.player.Player$$ExternalSyntheticLambda9.accept(R8$$SyntheticClass:0)
    at j$.util.Optional.ifPresent(Unknown Source:4)
    at org.schabi.newpipe.player.Player.onEvents(Player.java:1423)
    at com.google.android.exoplayer2.ExoPlayerImpl.lambda$new$0(ExoPlayerImpl.java:266)
    at com.google.android.exoplayer2.ExoPlayerImpl.$r8$lambda$FaN7Odt_OJn5xWFlmhnR2OmiNMg(ExoPlayerImpl.java:0)
    at com.google.android.exoplayer2.ExoPlayerImpl$$ExternalSyntheticLambda1.invoke(R8$$SyntheticClass:0)
    at com.google.android.exoplayer2.util.ListenerSet$ListenerHolder.release(ListenerSet.java:320)
    at com.google.android.exoplayer2.util.ListenerSet.remove(ListenerSet.java:183)
    at com.google.android.exoplayer2.ExoPlayerImpl.removeListener(ExoPlayerImpl.java:1641)
    at org.schabi.newpipe.player.Player.destroyPlayer(Player.java:604)
    at org.schabi.newpipe.player.Player.destroy(Player.java:631)
    at org.schabi.newpipe.player.PlayerService.cleanup(PlayerService.java:150)
    at org.schabi.newpipe.player.PlayerService.onDestroy(PlayerService.java:145)
    at android.app.ActivityThread.handleStopService(ActivityThread.java:5298)
    ... 9 more


Affected Android/Custom ROM version

No response

Affected device model

No response

Additional information

No response

longestmt commented 3 weeks ago

Exception

java.lang.RuntimeException: Unable to stop service org.schabi.newpipe.player.PlayerService@2fb365a: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.google.android.exoplayer2.ext.mediasession.MediaSessionConnector.setCustomActionProviders(com.google.android.exoplayer2.ext.mediasession.MediaSessionConnector$CustomActionProvider[])' on a null object reference
    at android.app.ActivityThread.handleStopService(ActivityThread.java:5318)
    at android.app.ActivityThread.-$$Nest$mhandleStopService(Unknown Source:0)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2539)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loopOnce(Looper.java:230)
    at android.os.Looper.loop(Looper.java:319)
    at android.app.ActivityThread.main(ActivityThread.java:8919)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:578)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1103)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.google.android.exoplayer2.ext.mediasession.MediaSessionConnector.setCustomActionProviders(com.google.android.exoplayer2.ext.mediasession.MediaSessionConnector$CustomActionProvider[])' on a null object reference
    at org.schabi.newpipe.player.mediasession.MediaSessionPlayerUi.updateMediaSessionActions(MediaSessionPlayerUi.java:215)
    at org.schabi.newpipe.player.mediasession.MediaSessionPlayerUi.onMetadataChanged(MediaSessionPlayerUi.java:282)
    at org.schabi.newpipe.player.Player.lambda$updateMetadataWith$24(Player.java:1965)
    at org.schabi.newpipe.player.Player.$r8$lambda$KYxtUfH3uL0EspE7uZXU5RuyulI(Player.java:0)
    at org.schabi.newpipe.player.Player$$ExternalSyntheticLambda54.accept(R8$$SyntheticClass:0)
    at j$.util.AbstractList$RandomAccessSpliterator.forEachRemaining(Unknown Source:19)
    at j$.util.stream.ReferencePipeline$Head.forEachOrdered(Unknown Source:10)
    at org.schabi.newpipe.player.ui.PlayerUiList.call(PlayerUiList.java:88)
    at org.schabi.newpipe.player.Player.updateMetadataWith(Player.java:1965)
    at org.schabi.newpipe.player.Player.lambda$onEvents$15(Player.java:1451)
    at org.schabi.newpipe.player.Player.$r8$lambda$Eed-B0TnQ_k8Al2mcJ0rZUnzA4o(Player.java:0)
    at org.schabi.newpipe.player.Player$$ExternalSyntheticLambda44.accept(R8$$SyntheticClass:0)
    at j$.util.Optional.ifPresent(Unknown Source:4)
    at org.schabi.newpipe.player.Player.lambda$onEvents$16(Player.java:1445)
    at org.schabi.newpipe.player.Player.$r8$lambda$GPJl-DFJZV0t5Qs0X5bQ_Y1vCXM(Player.java:0)
    at org.schabi.newpipe.player.Player$$ExternalSyntheticLambda9.accept(R8$$SyntheticClass:0)
    at j$.util.Optional.ifPresent(Unknown Source:4)
    at org.schabi.newpipe.player.Player.onEvents(Player.java:1423)
    at com.google.android.exoplayer2.ExoPlayerImpl.lambda$new$0(ExoPlayerImpl.java:266)
    at com.google.android.exoplayer2.ExoPlayerImpl.$r8$lambda$FaN7Odt_OJn5xWFlmhnR2OmiNMg(ExoPlayerImpl.java:0)
    at com.google.android.exoplayer2.ExoPlayerImpl$$ExternalSyntheticLambda1.invoke(R8$$SyntheticClass:0)
    at com.google.android.exoplayer2.util.ListenerSet$ListenerHolder.release(ListenerSet.java:320)
    at com.google.android.exoplayer2.util.ListenerSet.remove(ListenerSet.java:183)
    at com.google.android.exoplayer2.ExoPlayerImpl.removeListener(ExoPlayerImpl.java:1641)
    at org.schabi.newpipe.player.Player.destroyPlayer(Player.java:604)
    at org.schabi.newpipe.player.Player.destroy(Player.java:631)
    at org.schabi.newpipe.player.PlayerService.cleanup(PlayerService.java:150)
    at org.schabi.newpipe.player.PlayerService.onDestroy(PlayerService.java:145)
    at android.app.ActivityThread.handleStopService(ActivityThread.java:5298)
    ... 9 more


DonnieWest commented 3 weeks ago

https://github.com/TeamNewPipe/NewPipe/issues/11255

https://github.com/yt-dlp/yt-dlp/issues/10397

You can see this is happening upstream and in yt-dlp. I'd imagine this gets fixed here when it gets fixed upstream

Gipsysoftware commented 3 weeks ago

This also affects me, the devs need to fix the bug

longestmt commented 3 weeks ago

This also affects me, the devs need to fix the bug

The devs are essentially doing this for free

AtmosphericIgnition commented 3 weeks ago

The NewPipe team is working on a fix. When the fix is landed in upsteam NewPipe, Tubular will need to rebase on the new upstream version of NewPipe. If you find Tubular/NewPipe valuable, consider donating to NewPipe's development here.

1dolla commented 3 weeks ago

I'm a little blank on the actual bug reported here. Is this the issue where you try to watch something, and you get a toast saying something to the effect of, "An error occurred, read the notification?"

I've been having this occur persistently since the latest update to Tubular. If I start a video, then turn off my screen and put my phone in my pocket (to listen to the video on headphones), it'll error after about a minute, and then I'll have to force-close Tubular and restart it, go into history, find the last video and restart it, making sure to keep the display on on my phone for about a minute, and then I can continue as normal.

Today, Tubular just starting doing this with all videos. Can't start anything. Is this the same bug that just got worse?

Also, don't be too hard on @Gipsysoftware , he's not entirely wrong, he's just ignorant about how this works I think. Imma give him a rocket emoji response instead of the downvote one :) But yeah, it's free software, and I am grateful for this software not sucking like the actual YouTube app which is made by actually paid moron developers that need not only downvote emojis, but pink slips, hehe :)

tuxayo commented 3 weeks ago

Shitty workaround: share the video from Tubular to either the UntrackMe app where you have a working invidious instance set. Or share the video to Firefox where you have LibRedirect installed with a working invidious instance set.

tuxayo commented 3 weeks ago

Also, this is a duplicate of #97 so close it if possible and copy comments that would bring new info in #97 to there.

Aareon commented 3 weeks ago

Related. Posting here to avoid duplicate issue

Exception

com.google.android.exoplayer2.ExoPlaybackException: Source error
    at com.google.android.exoplayer2.ExoPlayerImplInternal.handleIoException(ExoPlayerImplInternal.java:644)
    at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:616)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loopOnce(Looper.java:257)
    at android.os.Looper.loop(Looper.java:368)
    at android.os.HandlerThread.run(HandlerThread.java:67)
Caused by: com.google.android.exoplayer2.upstream.HttpDataSource$InvalidResponseCodeException: Response code: 403
    at org.schabi.newpipe.player.datasource.YoutubeHttpDataSource.open(YoutubeHttpDataSource.java:422)
    at com.google.android.exoplayer2.upstream.DefaultDataSource.open(DefaultDataSource.java:263)
    at com.google.android.exoplayer2.upstream.TeeDataSource.open(TeeDataSource.java:52)
    at com.google.android.exoplayer2.upstream.cache.CacheDataSource.openNextSource(CacheDataSource.java:796)
    at com.google.android.exoplayer2.upstream.cache.CacheDataSource.open(CacheDataSource.java:609)
    at com.google.android.exoplayer2.upstream.StatsDataSource.open(StatsDataSource.java:84)
    at com.google.android.exoplayer2.source.chunk.InitializationChunk.load(InitializationChunk.java:99)
    at com.google.android.exoplayer2.upstream.Loader$LoadTask.run(Loader.java:412)
    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)