ppy / osu

rhythm is just a *click* away!
https://osu.ppy.sh
MIT License
15.02k stars 2.22k forks source link

Score replay import stalled #29065

Closed Non-Binary-Programmer closed 2 days ago

Non-Binary-Programmer commented 1 month ago

Type

Game behaviour

Bug description

I started playing Sotark's uhh? difficulty map of (can you) understand me? when the game skipped forward then froze, similar to what I reported in #29061, but happening immediately at the start of the map. However, this time, when I tried to download the replay file to add to that discussion, nothing happened. The button stayed in the processing state until I decided to give up and report it as a bug. Upon exiting the menu, the replay was not present in my local plays.

According to my memory I did not successfully hit any hitobjects, and I do not remember if I pressed any keys before failing. I definitely provided cursor input.

I am playing on a 14-inch 2021 MacBook Pro with Apple M1 Pro chip and 16GB memory running MacOS Sonoma 14.5. I am using the experimental Metal renderer.

Edit: After a bit of basic testing, this appears to be fully reproducible by simply failing any map without any score on any of the 4 built-in rulesets.

Screenshots or videos

Screenshot 2024-07-25 at 18 05 02

Version

2024.725.0-lazer

Logs

compressed-logs.zip

cdwcgt commented 1 month ago

Cannot reproduce on master, and cannot reproduce on official build without logging in But after logging in, there will be this problem

bdach commented 1 month ago

The logs show very little.

2024-07-25 08:03:53 [verbose]: GameplayClockContainer started via call to StartGameplayClock
2024-07-25 08:03:54 [verbose]: GameplayClockContainer seeking to -944
2024-07-25 08:03:56 [verbose]: Playback discrepancy detected (1 of allowed 5): 56,893.9 vs 3,660.4
2024-07-25 08:03:56 [error]: Denying backwards seek during gameplay (reference: 675.99 stable: 2,445.25)
2024-07-25 08:03:56 [error]: originalSource: current: 694.13 running: True rate: 1
2024-07-25 08:03:56 [error]: userGlobalOffsetClock: current: 675.99 running: True rate: 1 elapsed: -53,258.26
2024-07-25 08:03:56 [error]: platformOffsetClock: current: 692.99 running: True rate: 1 elapsed: -53,258.26
2024-07-25 08:03:56 [error]: userBeatmapOffsetClock: current: 675.99 running: True rate: 1 elapsed: -53,258.26
2024-07-25 08:03:56 [error]: interpolatedTrack: current: 692.99 running: True rate: 1 elapsed: -53,258.26
2024-07-25 08:03:56 [error]: decoupledTrack: current: 692.99 running: True rate: 1 elapsed: -53,258.26
2024-07-25 08:03:56 [error]: finalClockSource: current: 675.99 running: True rate: 1 elapsed: -53,258.26
2024-07-25 08:03:56 [error]: 
2024-07-25 08:03:56 [error]: osu.Game.Utils.SentryOnlyDiagnosticsException: backwards seek
2024-07-25 08:03:59 [verbose]: Frames arrived at SpectatorClient outside of gameplay scope and will be ignored.
2024-07-25 08:03:59 [verbose]: GameplayClockContainer stopped via call to StopGameplayClock
2024-07-25 08:04:10 [verbose]: Received beatmap updates 2 updates with last id 8460651
2024-07-25 08:05:05 [verbose]: Received beatmap updates 1 updates with last id 8460652
2024-07-25 08:05:08 [verbose]: 📺 OsuScreenStack#291(depth:5) exit from SoloPlayer#428
2024-07-25 08:05:08 [verbose]: 📺 OsuScreenStack#291(depth:5) resume to PlayerLoader#459
2024-07-25 08:05:08 [verbose]: Ending high performance session
2024-07-25 08:05:08 [verbose]: 📺 OsuScreenStack#291(depth:4) exit from PlayerLoader#459
2024-07-25 08:05:08 [verbose]: 📺 OsuScreenStack#291(depth:4) resume to PlaySongSelect#494

There's not even a database.log for that session. Which I would expect to see if an actual import process had started.

Cannot reproduce on master, and cannot reproduce on official build without logging in But after logging in, there will be this problem

So you can reproduce or can not? I'm confused here.

cdwcgt commented 1 month ago

So you can reproduce or can not? I'm confused here.

https://github.com/user-attachments/assets/1e583ef7-1dc4-4c48-9a2c-1b430b8e170e

and then build in master cannot reproduce

also the log for this video run

logs.zip

Non-Binary-Programmer commented 1 month ago

The logs show very little.

There's not even a database.log for that session. Which I would expect to see if an actual import process had started.

Is this a problem? Do you want me to try again and upload logs from that?

peppy commented 2 weeks ago

@Non-Binary-Programmer please update the title and description mentioning that this requires a non-official ruleset to be loaded. at least from what i've read that seems to be the case?

Non-Binary-Programmer commented 2 weeks ago

@Non-Binary-Programmer please update the title and description mentioning that this requires a non-official ruleset to be loaded. at least from what i've read that seems to be the case?

This is not the case. I have never loaded a non-official ruleset.

peppy commented 2 weeks ago

I'm so lost with this conversation.

@Non-Binary-Programmer please make a video showing the issue.

Non-Binary-Programmer commented 2 weeks ago

@peppy video showing issue:

https://github.com/user-attachments/assets/67e03dce-498a-4e5a-9918-224cada1fc9c

After the end of the video, the download button remains yellow. Usually, I can download replays in less than half a second.

Video showing that error does not occur after logging out as pointed out by @cdwcgt :

https://github.com/user-attachments/assets/b6c4ba2c-9d77-46d1-9001-769523fe08b1

Joehuu commented 1 week ago

The issue has something to do with this code: https://github.com/ppy/osu/blob/5a8b8908dd5ba8064f87d803fb1308340139582a/osu.Game/Screens/Play/SubmittingPlayer.cs#L270-L287

When failing by never hitting anything:

Then, when pressing the save replay button:

The simple fix would be to move the statistics condition above the lock, but I find it weird that the save replay button has to go through this score submission flow instead of just ImportScore().

Edit: And/or disable the button when there aren't any hits because the replay would be meaningless.

bdach commented 1 week ago

I find it weird that the save replay button has to go through this score submission flow instead of just ImportScore().

Importing a local score should not be triggering submission flows. If it is, it's a massive oversight.