AttorneyOnline / AO2-Client

An off-the-cuff courtroom drama simulator
https://aceattorneyonline.com
GNU General Public License v3.0
63 stars 58 forks source link

Large/Long apng files cause hard crash #976

Closed collinxchu closed 3 weeks ago

collinxchu commented 3 weeks ago

Describe the bug On AOV, we have some large 60 fps animations or cutscenes. Depending on client theme these can hard crash the client, and some very large files cause the client to choke and die partway into the animation regardless (but sooner if on something like 2x). Not sure if this behavior is present in other file formats, have not tested.

To reproduce Steps to reproduce the behavior:

  1. Grab something like this file, or any apng file in excess of ~120mb.
  2. Attempt to play it in client (on a 2x theme for extra early crashing).
  3. Watch as it plays partially, then either hard crashes your client, or completely locks it up.
  4. Despair.

Expected behavior Long animation plays without dying of extreme death, or failure to play completely does not result in a hard crash/softlock.

TrickyLeifa commented 3 weeks ago

It crashes because you run out of memory, not because of the client bugging out.

If you want to report a bug with APNG, you should report it to the plugin's author.

I'd suggest using a format other than APNG.

TrickyLeifa commented 3 weeks ago

To provide some extra details; the APNG you posted would consume approximately 2.3gb of RAM when you have it processed. Don't do that or you and other people will need to acquire more RAM.

The APNG plugin (nor this client) was ever designed to handle massive amount of frames like this.

It would require a different format in order to deal with the limitation, the current plugin is nowhere capable of handling this.

collinxchu commented 3 weeks ago

I have 24GB of ram. I don't think I'm running out of RAM at all just running AO, even with a beefy file like this. Other users with similarly powerful rigs still report issues with very large files as well.

I understand the plugin isn't designed for this, but I don't think it's an issue of my hardware. I was just hoping it could be made to fail a bit more elegantly in these edge cases.

EDIT: Turns out it was the 32 bit memory limit, and not my physical memory. Genuinely nothing I think can be done about that even as a backported thing.