ppy / osu

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

Client crashed after editing qualifier result #20783

Closed RushFTK closed 2 years ago

RushFTK commented 2 years ago

Type

Crash to desktop

Bug description

The game will be crushed if you quit "edit seeding result" fast enough by opening an "incomplete" team. The game version is a special version given on #20781, but I guess the latest stable lazer version have same error.

Steps to reproduce:

  1. Edit braket.json under the tournament's file folder, and add an incomplete object to the Teams array, with only the necessary attributes contained. the following object is an example, as you can see, missing BeatmapInfo and other things not necessary :
    {
      "FullName": "Myon_",
      "FlagName": "16626025",
      "Acronym": "16626025",
      "SeedingResults": [
        {
          "Beatmaps": [
            {
              "ID": 3831056,
              "Score": 973381,
              "Seed": 10
            }
          ],
          "Mod": "SV",
          "Seed": 10
        },
        {
          "Beatmaps": [
            {
              "ID": 3831047,
              "Score": 958216,
              "Seed": 60
            },
            {
              "ID": 3831054,
              "Score": 981045,
              "Seed": 34
            },
            {
              "ID": 3831046,
              "Score": 952202,
              "Seed": 60
            }
          ],
          "Mod": "RC",
          "Seed": 48
        },
        {
          "Beatmaps": [
            {
              "ID": 3831043,
              "Score": 970222,
              "Seed": 26
            },
            {
              "ID": 3831045,
              "Score": 971863,
              "Seed": 21
            }
          ],
          "Mod": "LN",
          "Seed": 23
        },
        {
          "Beatmaps": [
            {
              "ID": 3831058,
              "Score": 965141,
              "Seed": 39
            },
            {
              "ID": 3831057,
              "Score": 942703,
              "Seed": 48
            }
          ],
          "Mod": "HB",
          "Seed": 45
        }
      ],
      "Seed": "28",
      "LastYearPlacing": 1,
      "AverageRank": 7264.0,
      "Players": [
        {
          "id": 16626025,
          "Username": "Myon_",
          "country_code": "CN",
          "Rank": 7264,
          "CoverUrl": "https://assets.ppy.sh/user-profile-covers/16626025/f15da64b322b32fd5ca511c3291d9cabaa2ea256eadb850402040444fcb0fdae.jpeg"
        }
      ]
    },
  2. open lazer tournament client, click "team Editor", select any team with incomplete information, and click "edit seeding results."
  3. fast click "back" before information is downloaded and completed.
  4. Error information rasing to the bottom and the game is crushed. if you waited until the information was completely downloaded or opened a "finalized" team. the game won't crush. as the gif shows. click teams called "Riemann" won't be caused crushed but "Myon" dose so. another experiment shows if waited long enough, "Myon" is also not crushed.

Screenshots or videos

case2

Version

Special Version (#20781 mentioned, next to 2022.1008.2)

Logs

unnecessary logs will be omitted

...
2022-10-16 14:14:48 [error]: An unhandled error has occurred.
2022-10-16 14:14:48 [error]: System.ObjectDisposedException: Children cannot be cleared on a disposed drawable.
2022-10-16 14:14:48 [error]: Object name: 'Container'.
2022-10-16 14:14:48 [error]: at osu.Framework.Graphics.Containers.CompositeDrawable.ClearInternal(Boolean disposeChildren)
2022-10-16 14:14:48 [error]: at osu.Game.Tournament.Screens.Editors.SeedingEditorScreen.SeedingResultRow.SeedingBeatmapEditor.SeedingBeatmapRow.updatePanel()
2022-10-16 14:14:48 [error]: at osu.Game.Tournament.Screens.Editors.SeedingEditorScreen.SeedingResultRow.SeedingBeatmapEditor.SeedingBeatmapRow.<load>b__12_2(APIBeatmap res)
2022-10-16 14:14:48 [error]: at osu.Game.Online.API.APIRequest`1.<.ctor>b__8_0() in /Users/dean/Projects/osu/osu.Game/Online/API/APIRequest.cs:line 38
2022-10-16 14:14:48 [error]: at osu.Game.Online.API.APIRequest.<TriggerSuccess>b__24_0() in /Users/dean/Projects/osu/osu.Game/Online/API/APIRequest.cs:line 164
2022-10-16 14:14:48 [error]: at osu.Framework.Threading.ScheduledDelegate.RunTaskInternal()
2022-10-16 14:14:48 [error]: at osu.Framework.Threading.Scheduler.Update()
2022-10-16 14:14:48 [error]: at osu.Framework.Graphics.Drawable.UpdateSubTree()
2022-10-16 14:14:48 [error]: at osu.Framework.Graphics.Containers.CompositeDrawable.UpdateSubTree()
2022-10-16 14:14:48 [error]: at osu.Framework.Graphics.Containers.CompositeDrawable.UpdateSubTree()
2022-10-16 14:14:48 [error]: at osu.Framework.Graphics.Containers.CompositeDrawable.UpdateSubTree()
2022-10-16 14:14:48 [error]: at osu.Framework.Graphics.Containers.CompositeDrawable.UpdateSubTree()
2022-10-16 14:14:48 [error]: at osu.Framework.Graphics.Containers.CompositeDrawable.UpdateSubTree()
2022-10-16 14:14:48 [error]: at osu.Framework.Platform.GameHost.UpdateFrame()
2022-10-16 14:14:48 [error]: at osu.Framework.Threading.GameThread.processFrame()
2022-10-16 14:14:48 [verbose]: Unhandled exception has been allowed with 0 more allowable exceptions .
2022-10-16 14:14:49 [error]: An unhandled error has occurred.
2022-10-16 14:14:49 [error]: System.ObjectDisposedException: Children cannot be cleared on a disposed drawable.
2022-10-16 14:14:49 [error]: Object name: 'Container'.
2022-10-16 14:14:49 [error]: at osu.Framework.Graphics.Containers.CompositeDrawable.ClearInternal(Boolean disposeChildren)
2022-10-16 14:14:49 [error]: at osu.Game.Tournament.Screens.Editors.SeedingEditorScreen.SeedingResultRow.SeedingBeatmapEditor.SeedingBeatmapRow.updatePanel()
2022-10-16 14:14:49 [error]: at osu.Game.Tournament.Screens.Editors.SeedingEditorScreen.SeedingResultRow.SeedingBeatmapEditor.SeedingBeatmapRow.<load>b__12_2(APIBeatmap res)
2022-10-16 14:14:49 [error]: at osu.Game.Online.API.APIRequest`1.<.ctor>b__8_0() in /Users/dean/Projects/osu/osu.Game/Online/API/APIRequest.cs:line 38
2022-10-16 14:14:49 [error]: at osu.Game.Online.API.APIRequest.<TriggerSuccess>b__24_0() in /Users/dean/Projects/osu/osu.Game/Online/API/APIRequest.cs:line 164
2022-10-16 14:14:49 [error]: at osu.Framework.Threading.ScheduledDelegate.RunTaskInternal()
2022-10-16 14:14:49 [error]: at osu.Framework.Threading.Scheduler.Update()
2022-10-16 14:14:49 [error]: at osu.Framework.Graphics.Drawable.UpdateSubTree()
2022-10-16 14:14:49 [error]: at osu.Framework.Graphics.Containers.CompositeDrawable.UpdateSubTree()
2022-10-16 14:14:49 [error]: at osu.Framework.Graphics.Containers.CompositeDrawable.UpdateSubTree()
2022-10-16 14:14:49 [error]: at osu.Framework.Graphics.Containers.CompositeDrawable.UpdateSubTree()
2022-10-16 14:14:49 [error]: at osu.Framework.Graphics.Containers.CompositeDrawable.UpdateSubTree()
2022-10-16 14:14:49 [error]: at osu.Framework.Graphics.Containers.CompositeDrawable.UpdateSubTree()
2022-10-16 14:14:49 [error]: at osu.Framework.Platform.GameHost.UpdateFrame()
2022-10-16 14:14:49 [error]: at osu.Framework.Threading.GameThread.processFrame()
2022-10-16 14:14:49 [verbose]: Unhandled exception has been denied .
2022-10-16 14:14:49 [error]: An unhandled error has occurred.
2022-10-16 14:14:49 [error]: System.ObjectDisposedException: Children cannot be cleared on a disposed drawable.
2022-10-16 14:14:49 [error]: Object name: 'Container'.
2022-10-16 14:14:49 [error]: at osu.Framework.Graphics.Containers.CompositeDrawable.ClearInternal(Boolean disposeChildren)
2022-10-16 14:14:49 [error]: at osu.Game.Tournament.Screens.Editors.SeedingEditorScreen.SeedingResultRow.SeedingBeatmapEditor.SeedingBeatmapRow.updatePanel()
2022-10-16 14:14:49 [error]: at osu.Game.Tournament.Screens.Editors.SeedingEditorScreen.SeedingResultRow.SeedingBeatmapEditor.SeedingBeatmapRow.<load>b__12_2(APIBeatmap res)
2022-10-16 14:14:49 [error]: at osu.Game.Online.API.APIRequest`1.<.ctor>b__8_0() in /Users/dean/Projects/osu/osu.Game/Online/API/APIRequest.cs:line 38
2022-10-16 14:14:49 [error]: at osu.Game.Online.API.APIRequest.<TriggerSuccess>b__24_0() in /Users/dean/Projects/osu/osu.Game/Online/API/APIRequest.cs:line 164
2022-10-16 14:14:49 [error]: at osu.Framework.Threading.ScheduledDelegate.RunTaskInternal()
2022-10-16 14:14:49 [error]: at osu.Framework.Threading.Scheduler.Update()
2022-10-16 14:14:49 [error]: at osu.Framework.Graphics.Drawable.UpdateSubTree()
2022-10-16 14:14:49 [error]: at osu.Framework.Graphics.Containers.CompositeDrawable.UpdateSubTree()
2022-10-16 14:14:49 [error]: at osu.Framework.Graphics.Containers.CompositeDrawable.UpdateSubTree()
2022-10-16 14:14:49 [error]: at osu.Framework.Graphics.Containers.CompositeDrawable.UpdateSubTree()
2022-10-16 14:14:49 [error]: at osu.Framework.Graphics.Containers.CompositeDrawable.UpdateSubTree()
2022-10-16 14:14:49 [error]: at osu.Framework.Graphics.Containers.CompositeDrawable.UpdateSubTree()
2022-10-16 14:14:49 [error]: at osu.Framework.Platform.GameHost.UpdateFrame()
2022-10-16 14:14:49 [error]: at osu.Framework.Threading.GameThread.processFrame()
2022-10-16 14:14:49 [verbose]: Unhandled exception has been denied .
2022-10-16 14:14:54 [verbose]: Host execution state changed to Stopping
2022-10-16 14:14:59 [verbose]: Host execution state changed to Stopped
peppy commented 2 years ago

This isn't a blocking issue and can be avoided for now, correct?

RushFTK commented 2 years ago

yes, not a high priority issue, could fix when have times