chrisboyle / sgtpuzzles

Android port of Simon Tatham's Puzzles
https://chris.boyle.name/puzzles
Other
597 stars 168 forks source link

Untangle: large games reset part way through #631

Closed its-dave closed 6 months ago

its-dave commented 9 months ago

Describe the bug When playing a larger game (>40 points) of Untangle the game will reset mid-game while moving a point, losing all progress. This is happening consistently. I cannot press undo to restore the lost game.

Version info

Additional context This has only started happening since the last update and I have only observed it on Untangle so maybe related to #625?

bobsayshilol commented 9 months ago

Seeing the same thing with signpost. Repro is as simple as dragging for a total of ~30s (doesn't have to be one continuous drag) and the game will reset. Note that my device is running at 90fps, so if it's tied to frame rate then it might take more/less time.

I thought it might be specific to the blitting code so I tried the same repro on pegs and it happens in about the same amount of time. untangle doesn't use a blitter AFAICT but the same repro does trigger the issue (feels like it takes >30s though).

In the adb logs I see the following in all 3 cases right at the reset:

1723  3769 E BpBinder: Too many binder proxy objects sent to uid 1000 from uid 10240 (6000 proxies held)
1723  1819 E ActivityManager: Uid 10240 sent too many Binders to uid 1000
1723  1805 D DisplayManagerService: Drop pending events for gone uid 10240
1723  1819 I ActivityManager: Killing 21424:name.boyle.chris.sgtpuzzles/u0a240 (adj 0): Too many Binders sent to SYSTEM

There's also a constant spam of this while dragging:

 1723  2079 D CoreBackPreview: Window{b84db6c u0 name.boyle.chris.sgtpuzzles/name.boyle.chris.sgtpuzzles.GamePlay}: Setting back callback OnBackInvokedCallbackInfo{mCallback=android.window.IOnBackInvokedCallback$Stub$Proxy@67bc279, mPriority=-1, mIsAnimationCallback=false}
 1723  2079 D CoreBackPreview: Window{b84db6c u0 name.boyle.chris.sgtpuzzles/name.boyle.chris.sgtpuzzles.GamePlay}: Setting back callback OnBackInvokedCallbackInfo{mCallback=android.window.IOnBackInvokedCallback$Stub$Proxy@a88dbbe, mPriority=0, mIsAnimationCallback=true}
21424 21424 W WindowOnBackDispatcher: sendCancelIfRunning: isInProgress=falsecallback=androidx.activity.OnBackPressedDispatcher$Api34Impl$createOnBackAnimationCallback$1@373dfc8