chr56/Phonograph_Plus

[Crash Report] App crash when reordering Playing Queue

Opened this issue · 9 comments

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

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.

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.

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
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)

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.

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.

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.

not fixed in version 1.8.5 ;(

not fixed in version 1.8.5 ;(

Currently there are not any fixes or changes yet since first reporting: as you can see in the changelogs of v1.8.5.

The bug is minor, requiring multiple tries to a successful reproduction (as for me). Normal interactions would not trigger such issue.

chr56 commented

Well, the bug is fixed since 64cb5df, by forbidding long pressing to start drag and drop. ;)

Preview channel version here.


Update:
more fixes in a0c0317, 27bbc91, df52663 (Preview channel version here)