ppy / osu

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

Opening the skin editor without a running track causes a `dummy` ruleset to be selected #26006

Open Gabixel opened 10 months ago

Gabixel commented 10 months ago

Type

Crash to desktop

Bug description

(Note: you can see from the video below that I also had a custom ruleset. I tried to launch the game without it, and the bug can still be reproduced)

To understand how to reproduce:

  1. Go the the main menu
  2. Pause the currently playing song (see step 4 for explanation)
  3. Enter the beatmap editor from the main menu, for a new temporary map
  4. We need to return to the main menu with "no beatmaps available!" as the current track. Pausing the player before entering the editor does the trick. I also did some stuff on the editor in the video below, but they aren't needed. You can quickly exit.
  5. Open the skin editor (both the keyboard shortcut and the main menu button can be used to reproduce the issue)
  6. We should have the dummy ruleset (in the video you can see all of the rulesets in the toolbar not selected, even the previous one, which still has the "glowing bottom line").
  7. If we enter the carousel, we get something like this which confirms the dummy ruleset:
    2023-12-21 14:53:26 [verbose]: 📺 OsuScreenStack#342(depth:4) suspended MainMenu#379 (waiting on PlaySongSelect#120)
    2023-12-21 14:53:26 [verbose]: ButtonSystem's state changed from Play to EnteringMode
    2023-12-21 14:53:26 [verbose]: 📺 OsuScreenStack#342(depth:5) entered PlaySongSelect#120
    2023-12-21 14:53:26 [verbose]: 📺 BackgroundScreenStack#319(depth:2) loading BackgroundScreenBeatmap#134
    2023-12-21 14:53:26 [verbose]: decoupled ruleset transferred ("osu!" -> "dummy")
    2023-12-21 14:53:26 [verbose]: 📺 BackgroundScreenStack#319(depth:2) suspended BackgroundScreenDefault#209 (waiting on BackgroundScreenBeatmap#134)
    2023-12-21 14:53:26 [verbose]: 📺 BackgroundScreenStack#319(depth:2) entered BackgroundScreenBeatmap#134
    2023-12-21 14:53:26 [verbose]: Song select updating selection with beatmap:5ac219d4-d042-4d4d-ae92-699bb20b2db1 ruleset:dummy

What happens next? (more as a fun experiment, you can ignore)

Trying to enter the editor, it gets mad because the ruleset it gets is null...

2023-12-21 14:30:56 [verbose]: Editor was loaded without a valid beatmap; creating a new beatmap.
2023-12-21 14:30:56 [error]: An unhandled error has occurred.
2023-12-21 14:30:56 [error]: System.ArgumentNullException: Value cannot be null. (Parameter 'Ruleset')

...and the database as well

2023-12-21 14:30:56 [error]: [?????] Database import or population failed and has been rolled back.
2023-12-21 14:30:56 [error]: System.ArgumentNullException: Value cannot be null. (Parameter 'Ruleset')

You can also see from the video that if the user enters the carousel, any kind of calculation throws errors (obviously)

Screenshots or videos

https://github.com/ppy/osu/assets/43073074/308b1b6a-bfae-4b1d-a7e1-951ea5e8beb1

Version

2023.1221.0-lazer

Logs

Logs from the video:

1703168929.database.log 1703168929.input.log 1703168929.network.log 1703168929.performance.log 1703168929.runtime.log 1703168929.updater.log

honguyenminh commented 10 months ago

Are basically the bugs from what I've read.