ppy / osu-stable-issues

Report critical osu-stable issues here
61 stars 11 forks source link

Major performance and stability issues after the Halloween update possibly due to an oversized database #206

Closed Sleepteiner closed 5 years ago

Sleepteiner commented 5 years ago

(This was originally posted in the Help forum since I didn't realize that this is the kind of thing that would be best to post here.)

Here are some of the issues that only started happening for me in a significant amount after the Halloween update:

My current theory for the cause of all this is that it is related to an oversized database due to the change in how mania converts have their star rating calculated. Before, the game wouldn't calculate the difficulty of maps under each of the forced key mods (from 1k to 18k) unless you actually clicked on those mods. Now it calculates all key modes for all converts at once. I have all ranked maps and I play all game modes, so my database relating to map data was already quite big, something around 275,000 star ratings were calculated and saved. This one update increased that number to over 1.1 million star ratings. It increased my osu.db from 150,000 kb to 250,000 kb with just data on the difficulty of maps. osu has historically not been good with big databases, and I think this massive increase might have pushed it over into consistently unstable territory. If this means that the game is no longer able to be stable if you want to have all ranked maps and play all game modes, then that is very sad to me.

I recently tried creating a new separate install of the game. I put a copy of my song folder, scores.db, and collections.db (along with a couple smaller folders) into the new install. I started to calculate the difficulty of all my maps. After standard, I went to mania, and sure enough, the difficulty calculation was causing noticeable lag and stuttering in song select in that install of the game as well. Which means, chances are, the other performance and stability issues would start happening as well if I let it run. But, I really didn't want to leave the calculation of all 1.1 million star ratings going on for the necessary 5-6 hours remaining on a client where it will very likely not be any better than my old client.

There were no software or hardware changes to my computer the same day I downloaded the update. All other programs on my computer are working perfectly fine. Having fewer programs running in the background did not seem to make a noticeable impact. Also, all of the specific issues going on have never been a significant problem for me before the update. I can't see a way that this isn't specifically related to the Halloween update.

Fixing these issues is quite urgent for me. While it might be a little selfish to bring this up, so I don't feel good doing so, but I have held the position of having the most SS ranks in osu!standard for 2.5 years, and if I don't find a way to fix all this soon, it might stall me and take away motivation enough to make me lose that position. Losing the position that I've worked so hard to maintain over something like this would be very depressing. So, please, if you have any information about how this can be solved, let me know.

osu! version: Stable 20191102.2

peppy commented 5 years ago

There was a mania difficulty recalculation backed into this update, to the issues you mention can likely be attributed to this.

Could you please share your db file and your log files after running osu! at song select for a few minutes as a first step?

smoogipoo commented 5 years ago

Occasional huge song select menu lag which can lead to misclicks and sometimes even crashes.

Please post the crash logs (you can right-click on the crying pippi to see the message).

Random converts in mania being listed as 0 stars, requiring a redownloading of the map.

If this is still happening even after sitting on the beatmap for a while, it would be best to link us to the beatmap, since it may be broken.

At least one crash per day while playing a map.

Please post crash logs.

osu has historically not been good with big databases

This is the first time I've heard of this, was there an issue about this on the forums somewhere?

The rest of the issues seem really weird to me - audio not loading and sliders not loading. These usually would indicate something has changed on your PC, but performance logs may help here (you'll need to get on CuttingEdge to see these).

Does this happen even when you don't select osu!mania in song select at all?

smoogipoo commented 5 years ago

It may also help if you enable the performance graph with Ctrl+F11 and take a screenshot when the lag happens. Along with that, please provide us your PC specs (CPU / RAM / GPU) and how much RAM is osu! using.

dora-0 commented 5 years ago

I'm having the same issue. Please review the logs below. I hope this helps. same as this thread: https://osu.ppy.sh/community/forums/topics/981580

runtime.log (when you try to upload your score):

2019-11-04T09:04:36: ERROR: Fatal error occurred during score submission
2019-11-04T09:04:36: System.OutOfMemoryException: 'System.OutOfMemoryException' 형식의 예외가 Throw되었습니다.
2019-11-04T09:04:36: 위치: #=zDW3WWutZmeT8FxRlmOKdlvh3SX9d.#=zKb2BqTk=(UInt32 #=zskDNogc=, UInt32 #=zb0rMfB770Vny, UInt32 #=zaW0ee4K7He4f, UInt32 #=zDmfwYrGZPsFi)
2019-11-04T09:04:36: 위치: #=zmy7r2z0WNzl4vbL7e_amLZjp4JIO.#=zKb2BqTk=()
2019-11-04T09:04:36: 위치: #=zmy7r2z0WNzl4vbL7e_amLZjp4JIO.#=zrF431$I=(Stream #=zUTN9Ymej20qc, Stream #=zUZk5w2CX5u1H, Int64 #=zbJXujWs=, Int64 #=zVgPjibs=)
2019-11-04T09:04:36: 위치: #=zmy7r2z0WNzl4vbL7e_amLZjp4JIO.#=z78asgLQ=(Stream #=zUTN9Ymej20qc, Stream #=zUZk5w2CX5u1H, Int64 #=zbJXujWs=, Int64 #=zVgPjibs=, #=z2yGWI1WAwN$1yeC$NdR_gWg= #=zoZN1cZw=)
2019-11-04T09:04:36: 위치: #=zWq$Fzx8mEHGwEor6CzwoRS4ZixEOIbC5BAkKKqg=.#=zMgiMdGg=(Byte[] #=zwsCH54ljIeBn)
2019-11-04T09:04:36: 위치: #=qqOoQNK2X2jX0Se45KdGzUgazXF5PIpz4YwOmZnTNpKU=.#=z1yq63mkeOX7Wsc4rhYahQtM=(Object #=z8gimE9M=)
2019-11-04T09:04:36: 위치: #=qqOoQNK2X2jX0Se45KdGzUgazXF5PIpz4YwOmZnTNpKU=.#=zhQgvbAkWXMfFstvjHBuD6DTOR3Jb(MethodBase #=z8gimE9M=, Boolean #=z_NFhJuY=)
2019-11-04T09:04:36: 위치: #=qqOoQNK2X2jX0Se45KdGzUgazXF5PIpz4YwOmZnTNpKU=.#=zAh8mVY_pTLzop2sFR8QVO_U=(#=qqOoQNK2X2jX0Se45KdGzUgazXF5PIpz4YwOmZnTNpKU= #=z8gimE9M=, #=qpZYair0WkJUa6mPf$C8ZmWizr$6luDYRHX5_HQxekzo= #=z_NFhJuY=)
2019-11-04T09:04:36: 위치: #=qqOoQNK2X2jX0Se45KdGzUgazXF5PIpz4YwOmZnTNpKU=.#=zAtjaFo7e9XSKLHW$SXXaecY4$472()
2019-11-04T09:04:36: 위치: #=qqOoQNK2X2jX0Se45KdGzUgazXF5PIpz4YwOmZnTNpKU=.#=z8SJqAytMCul2pkTspNaoUCOYIiWFBH$_IaCEbJe34_1w(Boolean #=z8gimE9M=)

runtime.log (when you try to play beatmap):

2019-11-04T16:47:04: ERROR:
2019-11-04T16:47:04: System.OutOfMemoryException: 'System.OutOfMemoryException' 형식의 예외가 Throw되었습니다.
2019-11-04T16:47:04: 위치: #=zqC3H2onlsffN70x$Zf70rmE=..ctor(Stream #=zEgOicaA=, Int32 #=zfbfgO5F$Br_J, #=zqC3H2onlsffN70x$Zf70rmE= #=zBKruqHY=)
2019-11-04T16:47:04: 위치: #=zRf2yIL9Eg66LwExCqZ0FwxQ=..ctor(Stream #=zCNN5xEE=, Boolean #=zf0g4oMU=, Boolean #=zmr8v74U=)
2019-11-04T16:47:04: 위치: #=zo2P$$aimcRoDVfV1FA==.#=zCDIOXuqilRqE(#=zCbWAdrsLNWCbMk$vKtKeLsdRKRM_Y9mDbAzTNCgZoLwt #=zaUvFJ1uGO56x, Boolean #=zf0g4oMU=, Boolean #=zmr8v74U=, #=zo2P$$aimcRoDVfV1FA== #=zg3MyIRQ=)
2019-11-04T16:47:04: 위치: #=zcehAZk3EeUHZWrYjNw==.#=z$z56ded7Qwc5(#=zCbWAdrsLNWCbMk$vKtKeLsdRKRM_Y9mDbAzTNCgZoLwt #=zaUvFJ1uGO56x, Boolean #=zgUZ9zKVRUn5T, Boolean #=zf0g4oMU=, Boolean #=zNXDIUZi1qrEk, Boolean #=zmr8v74U=)
2019-11-04T16:47:04: 위치: #=zXYZNCV11dzSI6OapPahWqvCdouuU.#=zbKxV1TuVw4DF()
2019-11-04T16:47:04: 위치: #=zXYZNCV11dzSI6OapPahWqvCdouuU.#=zKHRMIYw16kRt()
2019-11-04T16:47:04: 위치: #=zKp5pp1YHQp9h8aE9lOnntqg=.#=zG6VaSW4=()

System Event Log (when a crash occurs during play):

응용 프로그램: osu!.exe
Framework 버전: v4.0.30319
설명: 처리되지 않은 예외로 인해 프로세스가 종료되었습니다.
예외 정보:System.OutOfMemoryException
위치: System.String.CtorCharArrayStartLength(Char[], Int32, Int32)
위치: System.IO.BinaryReader.ReadString()
위치: System.Runtime.Serialization.Formatters.Binary.__BinaryParser.ReadAssembly(System.Runtime.Serialization.Formatters.Binary.BinaryHeaderEnum)
위치: System.Runtime.Serialization.Formatters.Binary.__BinaryParser.Run()
위치: System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize(System.Runtime.Remoting.Messaging.HeaderHandler, System.Runtime.Serialization.Formatters.Binary.__BinaryParser, Boolean, Boolean, System.Runtime.Remoting.Messaging.IMethodCallMessage)
위치: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(System.IO.Stream, System.Runtime.Remoting.Messaging.HeaderHandler, Boolean, Boolean, System.Runtime.Remoting.Messaging.IMethodCallMessage)
위치: System.Resources.ResourceReader.DeserializeObject(Int32)
위치: System.Resources.ResourceReader._LoadObjectV2(Int32, System.Resources.ResourceTypeCode ByRef)
위치: System.Resources.ResourceReader.LoadObjectV2(Int32, System.Resources.ResourceTypeCode ByRef)
위치: System.Resources.ResourceReader.LoadObject(Int32, System.Resources.ResourceTypeCode ByRef)
위치: System.Resources.RuntimeResourceSet.GetObject(System.String, Boolean, Boolean)
위치: System.Resources.RuntimeResourceSet.GetObject(System.String, Boolean)
위치: System.Resources.ResourceManager.GetObject(System.String, System.Globalization.CultureInfo, Boolean)
위치: System.Resources.ResourceManager.GetObject(System.String, System.Globalization.CultureInfo)
위치: #=z3TV1WJ7aun7etMLTWQ==.#=zmqNJR5QO5$jPhG8glA==()
위치: #=zuwMWRO8QsRKEMwBpPSwZk34=.#=zvo2NY7JhIPHa()
위치: #=zuwMWRO8QsRKEMwBpPSwZk34=..ctor(System.Exception, Boolean)
위치: #=zgtcJUW0g8go3zT0MnQ==+#=zxqz6LTKXrhNkWfohDrysdS0=.#=zJ0vwVUEKaQiQjD3JkQ==()
위치: #=zn6lrwIEslQT3QTbxJ7QK0JA=.#=zieK6ZPw=(#=zCaeUTpvX9mHPIWV$kq1NDxw=, Boolean)
위치: #=zgtcJUW0g8go3zT0MnQ==.#=z8bH39dw=(System.Exception, Boolean)
위치: #=zgtcJUW0g8go3zT0MnQ==+#=z1V0V0MI=.#=zAGWNrAHOK_mmmKcMuMNN5oQ=(System.Object, System.Threading.ThreadExceptionEventArgs)
위치: System.Windows.Forms.Application+ThreadContext.OnThreadException(System.Exception)
위치: System.Windows.Forms.Control.WndProcException(System.Exception)
위치: System.Windows.Forms.Control+ControlNativeWindow.OnThreadException(System.Exception)
위치: System.Windows.Forms.NativeWindow.Callback(IntPtr, Int32, IntPtr, IntPtr)
smoogipoo commented 5 years ago

Thanks, that gives us a good starting point.

smoogipoo commented 5 years ago

I've added some basic logging to try and narrow down the issue. Please try the Cutting Edge release stream, replicate the issue, then post your runtime.log file.

smoogipoo commented 5 years ago

@Sleepteiner @dora-0 one more thing: after score submission fails, right-click osu! in the task manager -> create dump file, and send the file to dumps@smgi.me .

Sleepteiner commented 5 years ago

Could you please share your db file

Not sure how I should upload it, so I just uploaded it to Google Drive. https://drive.google.com/file/d/1qBpSNvAmyWmqwES-3pnuVdyQesaapE9n/view

and your log files

I'm afraid I don't know how to access log files, sorry. Once I find out, I'll send them

Please post the crash logs (you can right-click on the crying pippi to see the message).

When osu crashes for me, it just closes immediately. No crying pippi pop-up.

If this is still happening even after sitting on the beatmap for a while, it would be best to link us to the beatmap, since it may be broken.

Which maps this effected was pretty random, and they calculated just fine in the other install that I tried, so it isn't the specific maps. Chances are some big lag spike caused the calculation to skip certain maps at random.

This is the first time I've heard of this, was there an issue about this on the forums somewhere?

I'm not sure if it is on the forums, however it is talked about all the time in the score farming community. Many ranked score players have multiple installs with like 100-200 map packs in them each instead of all ranked maps in one install since the larger the install, the less stable it tends to become.

performance logs may help here (you'll need to get on CuttingEdge to see these).

I'll make sure to play on CuttingEdge tomorrow. It is one of those problems that gets worse over time and I don't have time to test it today. How would I access these logs, when I need them?

Does this happen even when you don't select osu!mania in song select at all?

Yea. I don't think it is the actual song select menu that is causing the issue, just that the song select menu is calling on a huge database, but I could be very wrong.

please provide us your PC specs (CPU / RAM / GPU) and how much RAM is osu! using.

CPU: Intel Core i7-8700K RAM: 16 GB GPU: NVIDIA GeForce GTX 1080 osu seems to be using 1.1k MB, according to the task manager.

smoogipoo commented 5 years ago

You can access the logs by clicking the "open osu! folder" button in the settings, and going into the "logs" folder from there. They're overwritten with every startup of the game, so make sure to grab them when it gets bad rather than on a fresh startup.

Sleepteiner commented 5 years ago

Ah, I see. I don't know how I missed that. I'll make sure to make copies of them tomorrow when the performance issues start happening again.

Edit: As recommended by Death on the osu forums, I found some "error" reports through the Event Viewer. But, even though I have been crashing at least once per day, there are only two listings of an error occuring the day I downloaded the Halloween update. Could this have something to do with the fact that no osu error window pops up? When the game crashes for me, it just goes straight to the desktop.

On top of that, while I have no idea what I am looking for, the two error reports really don't seem to have any info.

Log Name:      Application
Source:        Application Error
Date:          10/31/2019 1:27:41 AM
Event ID:      1000
Task Category: (100)
Level:         Error
Keywords:      Classic
User:          N/A
Computer:      Nate
Description:
Faulting application name: osu!.exe, version: 1.3.3.7, time stamp: 0x5db9ab98
Faulting module name: KERNELBASE.dll, version: 10.0.18362.418, time stamp: 0x2b181c2c
Exception code: 0xc000041d
Fault offset: 0x00113572
Faulting process id: 0x3b94
Faulting application start time: 0x01d58fbae41b213d
Faulting application path: D:\osu!\osu!.exe
Faulting module path: C:\WINDOWS\System32\KERNELBASE.dll
Report Id: ad191d03-a2a1-4bf5-a4dc-b6aac6710bc6
Faulting package full name: 
Faulting package-relative application ID: 
Event Xml:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
  <System>
    <Provider Name="Application Error" />
    <EventID Qualifiers="0">1000</EventID>
    <Level>2</Level>
    <Task>100</Task>
    <Keywords>0x80000000000000</Keywords>
    <TimeCreated SystemTime="2019-10-31T08:27:41.092318200Z" />
    <EventRecordID>6317</EventRecordID>
    <Channel>Application</Channel>
    <Computer>Nate</Computer>
    <Security />
  </System>
  <EventData>
    <Data>osu!.exe</Data>
    <Data>1.3.3.7</Data>
    <Data>5db9ab98</Data>
    <Data>KERNELBASE.dll</Data>
    <Data>10.0.18362.418</Data>
    <Data>2b181c2c</Data>
    <Data>c000041d</Data>
    <Data>00113572</Data>
    <Data>3b94</Data>
    <Data>01d58fbae41b213d</Data>
    <Data>D:\osu!\osu!.exe</Data>
    <Data>C:\WINDOWS\System32\KERNELBASE.dll</Data>
    <Data>ad191d03-a2a1-4bf5-a4dc-b6aac6710bc6</Data>
    <Data>
    </Data>
    <Data>
    </Data>
  </EventData>
</Event>
Log Name:      Application
Source:        Application Error
Date:          10/31/2019 1:27:38 AM
Event ID:      1000
Task Category: (100)
Level:         Error
Keywords:      Classic
User:          N/A
Computer:      Nate
Description:
Faulting application name: osu!.exe, version: 1.3.3.7, time stamp: 0x5db9ab98
Faulting module name: KERNELBASE.dll, version: 10.0.18362.418, time stamp: 0x2b181c2c
Exception code: 0xe0434352
Fault offset: 0x00113572
Faulting process id: 0x3b94
Faulting application start time: 0x01d58fbae41b213d
Faulting application path: D:\osu!\osu!.exe
Faulting module path: C:\WINDOWS\System32\KERNELBASE.dll
Report Id: 56d72496-ed5e-478c-b395-430bbbfd10ff
Faulting package full name: 
Faulting package-relative application ID: 
Event Xml:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
  <System>
    <Provider Name="Application Error" />
    <EventID Qualifiers="0">1000</EventID>
    <Level>2</Level>
    <Task>100</Task>
    <Keywords>0x80000000000000</Keywords>
    <TimeCreated SystemTime="2019-10-31T08:27:38.653607800Z" />
    <EventRecordID>6307</EventRecordID>
    <Channel>Application</Channel>
    <Computer>Nate</Computer>
    <Security />
  </System>
  <EventData>
    <Data>osu!.exe</Data>
    <Data>1.3.3.7</Data>
    <Data>5db9ab98</Data>
    <Data>KERNELBASE.dll</Data>
    <Data>10.0.18362.418</Data>
    <Data>2b181c2c</Data>
    <Data>e0434352</Data>
    <Data>00113572</Data>
    <Data>3b94</Data>
    <Data>01d58fbae41b213d</Data>
    <Data>D:\osu!\osu!.exe</Data>
    <Data>C:\WINDOWS\System32\KERNELBASE.dll</Data>
    <Data>56d72496-ed5e-478c-b395-430bbbfd10ff</Data>
    <Data>
    </Data>
    <Data>
    </Data>
  </EventData>
</Event>
dora-0 commented 5 years ago

I tested on the version b20191105.1 cuttingedge, the problem was reproduced. I hope you'll find it helpful, Let me know if you need anything else. Thanks!

Logs_Zgoon_20191105_2021.zip

smoogipoo commented 5 years ago

@dora-0 Unfortunately the logs don't really show much, only that diffcalc can be ruled out. Could you follow the above steps and send your process dumps to dumps@smgi.me so we can investigate further?

dora-0 commented 5 years ago

@smoogipoo I sent you an email. Please confirm :)

smoogipoo commented 5 years ago

We've pushed a new cutting edge build that may help with this issue. Let us know if it works!

If that doesn't help, we don't have any other solution other than suggesting you delete some beatmaps, which you can do by filtering and selecting F3 -> Delete... -> Delete ALL VISIBLE beatmaps!! from song select.

dora-0 commented 5 years ago

The problem is still reproduced. I guess it's because the osu is a 32-bit build... @smoogipoo I sent you logs and dump file. Thank you for your hard work!

peppy commented 5 years ago

As mentioned, we don't have a way forward for this issue for the time being (it only affects a very small number of players).

Please consider filtering your song select using a search for low difficulty maps or similar, and remove some beatmaps from your library which you would never be interested in playing.

Sleepteiner commented 5 years ago

I think my particular issue might be slightly different from dora-0's issue, so it would be great if the logs I sent just now could still be looked at, thanks.

The client was a lot more stable today, which is great. It is still not good, but better. The song select lag was only once so bad to make the client unusable for a short period. (Edit: I tried to take a screenshot of the performance graph when it was happening, but the screenshot taken was just a black screen for some reason, lol. After a restart, the screenshot function started working again.) The audio of beatmaps not loading was still a problem, but it only happened for one map that I wanted to play, so I only had to restart once in 4 hours of playing. Backgrounds not loading was still happening, but less often than before and it seemed to fix itself each time without a restart. It still crashed one time, but it seemed to follow my frame time increasing by like 300-400%, which is the same thing that happened last time, so if I watch out for that, I might be able to avoid most crashes, maybe. All scores submitted, thankfully. One time a lag spike seemed to disconnect me from Bancho, but I reconnected within a minute.

This improvement could be a few things. It could be just luck, or maybe cutting edge is just more stable in this particular situation, or maybe that new stability thing smoogipoo implemented might have half worked.

peppy commented 5 years ago

I checked both your dumps. It's 100% the same issue (but can manifest differently depending on which pieces of the game hit the OutOfMemory error).

We'll try one final attempt at a fix in tomorrow's CE release. If this still fails, the above recommendation still stands as our final solution.

Sleepteiner commented 5 years ago

Alright. Thanks for your hard work!

peppy commented 5 years ago

Build is live on cutting edge, please give it a shot.

dora-0 commented 5 years ago

It seems to be quite effective this time. I have tried several test cases, but have not encountered any problems yet.

I'll let you know again later.

Sleepteiner commented 5 years ago

Yea, my client worked perfectly today. This might have done it. This situation was a source of mild stress for me since I wasn't sure the way I play osu would be possible anymore. So, thank you so much for all your hard work. It really means a lot. <3

peppy commented 5 years ago

Awesome stuff. Thanks for helping us out!

dora-0 commented 5 years ago

All right, my client works perfectly, too. I didn't see any errors. Thank you for your hard work!