TeamNewPipe / NewPipe

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

NewPipe crashes when used on external screen/vendor specific screen-sharing (Samsung DEX, LG Screen+, WSA) #7865

Open litetex opened 2 years ago

litetex commented 2 years ago

Checklist

Preamble

This issue combines multiple existing issues into one issue because - despite being implement by different manufactures - these results in the same bug.

Steps to reproduce the bug

  1. Play a video
  2. Open something that has uses a "popup"/dropdown in the player UI, e.g. change the resolution or subtitles

Actual behavior

App crashes

android.view.WindowManager$BadTokenException: Unable to add window -- token android.view.ViewRootImpl$W@fda8ca is not valid; is your activity running?

Expected behavior

App works as expected

Logs

Samsung DEX

android.view.WindowManager$BadTokenException: Unable to add window -- token android.view.ViewRootImpl$W@fda8ca is not valid; is your activity running?
    at android.view.ViewRootImpl.setView(ViewRootImpl.java:1444)
    at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:469)
    at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:114)
    at android.widget.PopupWindow.invokePopup(PopupWindow.java:1657)
    at android.widget.PopupWindow.showAsDropDown(PopupWindow.java:1460)
    at android.widget.ListPopupWindow.show(ListPopupWindow.java:771)
    at com.android.internal.view.menu.CascadingMenuPopup.showMenu(CascadingMenuPopup.java:480)
    at com.android.internal.view.menu.CascadingMenuPopup.show(CascadingMenuPopup.java:289)
    at com.android.internal.view.menu.MenuPopupHelper.showPopup(MenuPopupHelper.java:303)
    at com.android.internal.view.menu.MenuPopupHelper.tryShow(MenuPopupHelper.java:192)
    at com.android.internal.view.menu.MenuPopupHelper.show(MenuPopupHelper.java:156)
    at android.widget.PopupMenu.show(PopupMenu.java:230)
    at org.schabi.newpipe.player.Player.onCaptionClicked(Player.java:3563)
    at org.schabi.newpipe.player.Player.onClick(Player.java:3670)
    at android.view.View.performClick(View.java:8160)
    at android.widget.TextView.performClick(TextView.java:16222)
    at android.view.View.performClickInternal(View.java:8137)
    at android.view.View.access$3700(View.java:888)
    at android.view.View$PerformClick.run(View.java:30236)
    at android.os.Handler.handleCallback(Handler.java:938)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:246)
    at android.app.ActivityThread.main(ActivityThread.java:8633)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1130)


Windows Subsystem for Android/WSA

Crash log

``` android.view.WindowManager$BadTokenException: Unable to add window -- token android.view.ViewRootImpl$W@11424e0 is not valid; is your activity running? at android.view.ViewRootImpl.setView(ViewRootImpl.java:1071) at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:409) at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:109) at android.widget.PopupWindow.invokePopup(PopupWindow.java:1576) at android.widget.PopupWindow.showAsDropDown(PopupWindow.java:1423) at android.widget.ListPopupWindow.show(ListPopupWindow.java:722) at com.android.internal.view.menu.CascadingMenuPopup.showMenu(CascadingMenuPopup.java:432) at com.android.internal.view.menu.CascadingMenuPopup.show(CascadingMenuPopup.java:247) at com.android.internal.view.menu.MenuPopupHelper.showPopup(MenuPopupHelper.java:283) at com.android.internal.view.menu.MenuPopupHelper.tryShow(MenuPopupHelper.java:178) at com.android.internal.view.menu.MenuPopupHelper.show(MenuPopupHelper.java:142) at android.widget.PopupMenu.show(PopupMenu.java:230) at org.schabi.newpipe.player.Player.onQualitySelectorClicked(Player.java:3532) at org.schabi.newpipe.player.Player.onClick(Player.java:3664) at android.view.View.performClick(View.java:7448) at android.view.View.performClickInternal(View.java:7425) at android.view.View.access$3600(View.java:810) at android.view.View$PerformClick.run(View.java:28305) 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) ```


LG screen+

Click to expand ``` { "user_action": "ui error", ... "service": "none", "package": "org.schabi.newpipe", "version": "0.21.16", "os": "Linux lge/caymanlm_e/caymanlm:11/RKQ1.201105.002/212521942c7f7.COM1_EU:user/release-keys 11 - 30", "time": "2022-02-12 15:10", "exceptions": [ "android.view.WindowManager$BadTokenException: Unable to add window -- token android.view.ViewRootImpl$WEx@954281e is not valid; is your activity running? at android.view.ViewRootImpl.setView(ViewRootImpl.java:1106) at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:437) at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:116) at android.widget.PopupWindow.invokePopup(PopupWindow.java:1636) at android.widget.PopupWindow.showAsDropDown(PopupWindow.java:1445) at android.widget.ListPopupWindow.show(ListPopupWindow.java:742) at com.android.internal.view.menu.CascadingMenuPopup.showMenu(CascadingMenuPopup.java:433) at com.android.internal.view.menu.CascadingMenuPopup.show(CascadingMenuPopup.java:248) at com.android.internal.view.menu.MenuPopupHelper.showPopup(MenuPopupHelper.java:283) at com.android.internal.view.menu.MenuPopupHelper.tryShow(MenuPopupHelper.java:178) at com.android.internal.view.menu.MenuPopupHelper.show(MenuPopupHelper.java:142) at android.widget.PopupMenu.show(PopupMenu.java:230) at org.schabi.newpipe.player.Player.onQualitySelectorClicked(Player.java:3513) at org.schabi.newpipe.player.Player.onClick(Player.java:3645) at android.view.View.performClick(View.java:7461) at android.view.View.performClickInternal(View.java:7438) at android.view.View.access$4000(View.java:815) at android.view.View$PerformClick.run(View.java:28396) 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:7867) 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:981) " ], "user_comment": "" } ```

Device info

Affected platforms:

NeatNit commented 2 years ago

I don't know if this is helpful, but I just encountered this bug myself when trying to change video quality in Samsung DeX. Crash log is below. The device is Samsung Galaxy S22+ with OneUI 4.1.

(I almost just opened a new issue, that checklist really works!)

Exception

android.view.WindowManager$BadTokenException: Unable to add window -- token android.view.ViewRootImpl$W@b2895a2 is not valid; is your activity running?
    at android.view.ViewRootImpl.setView(ViewRootImpl.java:1588)
    at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:509)
    at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:133)
    at android.widget.PopupWindow.invokePopup(PopupWindow.java:1688)
    at android.widget.PopupWindow.showAsDropDown(PopupWindow.java:1489)
    at androidx.appcompat.widget.AppCompatPopupWindow.showAsDropDown(AppCompatPopupWindow.java:77)
    at androidx.core.widget.PopupWindowCompat$Api19Impl.showAsDropDown(PopupWindowCompat.java:247)
    at androidx.core.widget.PopupWindowCompat.showAsDropDown(PopupWindowCompat.java:71)
    at androidx.appcompat.widget.ListPopupWindow.show(ListPopupWindow.java:754)
    at androidx.appcompat.view.menu.CascadingMenuPopup.showMenu(CascadingMenuPopup.java:487)
    at androidx.appcompat.view.menu.CascadingMenuPopup.show(CascadingMenuPopup.java:266)
    at androidx.appcompat.view.menu.MenuPopupHelper.showPopup(MenuPopupHelper.java:296)
    at androidx.appcompat.view.menu.MenuPopupHelper.tryShow(MenuPopupHelper.java:182)
    at androidx.appcompat.view.menu.MenuPopupHelper.show(MenuPopupHelper.java:144)
    at androidx.appcompat.widget.PopupMenu.show(PopupMenu.java:238)
    at org.schabi.newpipe.player.listeners.view.QualityClickListener.onClick(QualityClickListener.kt:29)
    at android.view.View.performClick(View.java:7792)
    at android.widget.TextView.performClick(TextView.java:16112)
    at android.view.View.performClickInternal(View.java:7769)
    at android.view.View.access$3800(View.java:910)
    at android.view.View$PerformClick.run(View.java:30218)
    at android.os.Handler.handleCallback(Handler.java:938)
    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:8663)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:567)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1135)


opusforlife2 commented 2 years ago

(I almost just opened a new issue, that checklist really works!)

You, sir, are a real Super Saiyan.

The-unknown-Shadowman commented 1 year ago

I' using the latest version 0.24 on Samsung S20 FE 5G and Samsung Dex. The problem still exists. NewPipe crashes after trying to change resolution or another menu that should show a popup menu.

TriplEight commented 1 year ago

I keep having this on Samsung S 21 U when I'm pressing the Cast button. But on the phone, there is no issues with the dropdowns in the player window. Also no issue with the comments section.

Just tested in Dex mode - can confirm, same issue with the same crash log. Happens on a dropdown which hides cast and sharing options and a quality chooser.

I believe, the Cast button also tries to open a pop-up with the devices to cast to.

The worst part about it is that the backNav button exits the app instead of returning to the content.

UPD: Just tested it on an updated Pixel 3aXL - no problems, all the dropdowns from the player are working. (It's the first time I encounter a working Cast button, and sadly the only option it gives me is to use Kodi. Doesn't see any Chromecast devices, TVs or even bluetooth Speakers - how to make use of it?)

Guru meditation "user_action":"ui error" "request":"ACRA report" "content_language":"en" "content_country":"GB" "app_language":"en_IE""service":"none" "package":"org.schabi.newpipe" "version":"0.24.1" "os":"Linux Android 13 - 33" "time":"2022-12-19 15:29" "exceptions":["android.view.WindowManager$BadTokenException: Unable to add window -- token null is not valid; is your activity running?\n\tat android.view.ViewRootImpl.setView(ViewRootImpl.java:1732)\n\tat android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:541)\n\tat android.view.WindowManagerImpl.addView(WindowManagerImpl.java:148)\n\tat android.app.Dialog.show(Dialog.java:523)\n\tat org.schabi.newpipe.util.external_communication.KoreUtils.showInstallKoreDialog(KoreUtils.java:39)\n\tat org.schabi.newpipe.player.ui.VideoPlayerUi.onPlayWithKodiClicked(VideoPlayerUi.java:1479)\n\tat org.schabi.newpipe.player.ui.VideoPlayerUi.onClick(VideoPlayerUi.java:1353)\n\tat org.schabi.newpipe.player.ui.MainPlayerUi.onClick(MainPlayerUi.java:863)\n\tat android.view.View.performClick(View.java:7881)\n\tat android.view.View.performClickInternal(View.java:7858)\n\tat android.view.View.-$$Nest$mperformClickInternal(Unknown Source:0)\n\tat android.view.View$PerformClick.run(View.java:30863)\n\tat android.os.Handler.handleCallback(Handler.java:942)\n\tat android.os.Handler.dispatchMessage(Handler.java:99)\n\tat android.os.Looper.loopOnce(Looper.java:226)\n\tat android.os.Looper.loop(Looper.java:313)\n\tat android.app.ActivityThread.main(ActivityThread.java:8741)\n\tat java.lang.reflect.Method.invoke(Native Method)\n\tat com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:571)\n\tat com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1067)\n"],"user_comment":""
DarkCrypt commented 6 months ago

Sadly, WSA will no longer be supported after March 5, 2025. Learn more at Microsoft/WSA (GitHub) and Microsoft Learn.