chr56 / Phonograph_Plus

A semi-active fork of kabouzeid/Phonograph -- a revived classic material designed music player for Android
GNU General Public License v3.0
379 stars 19 forks source link

[Crash Report] App crash when reordering playlist #223

Open shezik opened 6 days ago

shezik commented 6 days ago

Crash log

Crash Report:

App version:     1.8.4 (1084)
Git Commit Hash: ff9861b5a23611e2a02b2b62eebc0f7dbd119bca
Package name:    player.phonograph.plus
Release favor:   modernStable
Android version: 14 (API 34)
Architecture:    arm64-v8a, armeabi-v7a, armeabi
Soc:             SM8475/eqs (by QTI) 
Device brand:    motorola (by motorola)
Device model:    eqs_cn/XT2241-1 (code eqs)
Build version:   U1SQ34.53-33
                 (2d7225-dc62e)
Language:        zh
Memory:          4675/11274 
Screen:          2310x1080 (dpi 400)
Permissions:     Storage(READ WRITE)

Stacktrace:
java.lang.IllegalStateException: dragging target must provides valid ID
    at x8.g.a(SourceFile:710)
    at androidx.recyclerview.widget.RecyclerView.I(SourceFile:21)
    at androidx.recyclerview.widget.RecyclerView.onInterceptTouchEvent(SourceFile:10)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2654)
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3126)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2801)
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3126)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2801)
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3126)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2801)
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3126)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2801)
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3126)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2801)
    at com.sothree.slidinguppanel.SlidingUpPanelLayout.dispatchTouchEvent(SourceFile:393)
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3126)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2801)
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3126)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2801)
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3126)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2801)
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3126)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2801)
    at com.sothree.slidinguppanel.SlidingUpPanelLayout.dispatchTouchEvent(SourceFile:393)
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3126)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2801)
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3126)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2801)
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3126)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2801)
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3126)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2801)
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3126)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2801)
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3126)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2801)
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3126)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2801)
    at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:511)
    at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1922)
    at android.app.Activity.dispatchTouchEvent(Activity.java:4505)
    at j.y.dispatchTouchEvent(SourceFile:3)
    at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:469)
    at android.view.View.dispatchPointerEvent(View.java:15967)
    at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:7331)
    at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:7125)
    at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:6537)
    at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:6594)
    at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:6560)
    at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:6725)
    at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:6568)
    at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:6782)
    at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:6541)
    at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:6594)
    at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:6560)
    at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:6568)
    at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:6541)
    at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:9685)
    at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:9601)
    at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:9562)
    at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:9832)
    at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:274)
    at android.view.InputEventReceiver.nativeConsumeBatchedInputEvents(Native Method)
    at android.view.InputEventReceiver.consumeBatchedInputEvents(InputEventReceiver.java:254)
    at android.view.ViewRootImpl.doConsumeBatchedInput(ViewRootImpl.java:9768)
    at android.view.ViewRootImpl$ConsumeBatchedInputRunnable.run(ViewRootImpl.java:9923)
    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1343)
    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1352)
    at android.view.Choreographer.doCallbacks(Choreographer.java:952)
    at android.view.Choreographer.doFrame(Choreographer.java:875)
    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1326)
    at android.os.Handler.handleCallback(Handler.java:1000)
    at android.os.Handler.dispatchMessage(Handler.java:104)
    at android.os.Looper.loopOnce(Looper.java:242)
    at android.os.Looper.loop(Looper.java:362)
    at android.app.ActivityThread.main(ActivityThread.java:8393)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:992)

Version

1.8.4

Steps to reproduce the bug

Quite random it is. Start the app, listen to a few songs, try long pressing and dragging a song in the playlist to reorder it, app crashes.

Environment

No response

Screenshots or Screen recordings

No response

Other helpful information

No response

chr56 commented 4 days ago

Excuse me, do you mean Playing Queue? And I would like to know how many songs in this list.

And consider to reduce the total quantity of this list.

shezik commented 4 days ago

Excuse me, I would like to know how many songs in the playlist.

912 songs. My playlist is usually shuffled (with the shuffle button on the bar that shows total number of songs), if this would help.

Edit: Yes, it is the Playing Queue (that I called the "playlist") that contains 912 songs, since there are this many songs on my device.

AdityaMishra135 commented 4 days ago

Yes, Playing queues

Crash Report:

App version:     1.8.4 (1084)
Git Commit Hash: ff9861b5a23611e2a02b2b62eebc0f7dbd119bca
Package name:    player.phonograph.plus
Release favor:   modernStable
Android version: 14 (API 34)
Architecture:    arm64-v8a, armeabi-v7a, armeabi
Soc:             SM4450/sky (by QTI) 
Device brand:    Redmi (by Xiaomi)
Device model:    sky_in/23076RN4BI (code sky)
Build version:   UKQ1.230917.001 release-keys
                 (V816.0.6.0.UMWINXM)
Language:        en
Memory:          1878/5416 
Screen:          2356x1080 (dpi 440)
Permissions:     Storage(READ WRITE)

Stacktrace:
java.lang.IllegalStateException: dragging target must provides valid ID
    at x8.g.a(SourceFile:710)
    at androidx.recyclerview.widget.RecyclerView.I(SourceFile:21)
    at androidx.recyclerview.widget.RecyclerView.onInterceptTouchEvent(SourceFile:10)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2674)
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3160)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2828)
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3160)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2828)
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3160)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2828)
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3160)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2828)
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3160)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2828)
    at com.sothree.slidinguppanel.SlidingUpPanelLayout.dispatchTouchEvent(SourceFile:393)
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3160)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2828)
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3160)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2828)
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3160)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2828)
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3160)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2828)
    at com.sothree.slidinguppanel.SlidingUpPanelLayout.dispatchTouchEvent(SourceFile:393)
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3160)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2828)
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3160)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2828)
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3160)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2828)
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3160)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2828)
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3160)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2828)
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3160)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2828)
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3160)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2828)
    at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:563)
    at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1908)
    at android.app.Activity.dispatchTouchEvent(Activity.java:4584)
    at j.y.dispatchTouchEvent(SourceFile:3)
    at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:521)
    at android.view.View.dispatchPointerEvent(View.java:16145)
    at com.xiaomi.mirror.MiuiMirrorImpl.isHandled(MiuiMirrorImpl.java:152)
    at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:7823)
    at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:7589)
    at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:6961)
    at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:7018)
    at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:6984)
    at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:7149)
    at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:6992)
    at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:7206)
    at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:6965)
    at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:7018)
    at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:6984)
    at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:6992)
    at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:6965)
    at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:10135)
    at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:10086)
    at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:10050)
    at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:10296)
    at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:307)
    at android.view.InputEventReceiver.nativeConsumeBatchedInputEvents(Native Method)
    at android.view.InputEventReceiver.consumeBatchedInputEvents(InputEventReceiver.java:275)
    at android.view.ViewRootImpl.doConsumeBatchedInput(ViewRootImpl.java:10221)
    at android.view.ViewRootImpl$ConsumeBatchedInputRunnable.run(ViewRootImpl.java:10390)
    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1634)
    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1643)
    at android.view.Choreographer.doCallbacks(Choreographer.java:1172)
    at android.view.Choreographer.doFrame(Choreographer.java:1069)
    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1607)
    at android.os.Handler.handleCallback(Handler.java:958)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loopOnce(Looper.java:224)
    at android.os.Looper.loop(Looper.java:318)
    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:561)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1013)
chr56 commented 3 days ago

Excuse me, could you all please make some diagnosis with this Preview?

Go to About -> Debug Menu (Long press icon) -> Check Overflowed Song Ids&Check Conflicted Song Ids to check any of abnormality.

shezik commented 3 days ago

Excuse me, could you all please make some diagnosis with this Preview?

Go to About -> Debug Menu (Long press icon) -> Check Overflowed Song Ids&Check Conflicted Song Ids to check any of abnormality.

The two debug options you mentioned in this Preview build turned out to be totally fine, showing empty lists. However I have found a way to trigger this crash consistently (also in the Preview build). Link to screen recording

It seems to me that the key to trigger this crash is to long press a song, wait until the device vibrates, then drag it before the animation completely fades.

chr56 commented 3 days ago

It seems to me that the key to trigger this crash is to long press a song, wait until the device vibrates, then drag it before the animation completely fades.

Confirmed. I reproduced it as well:

  1. Long press an item;
  2. Wait for vibration;
  3. Quickly move the item before the end of ripple animation.