JujuAdams / SNAP

Data format converters for GameMaker LTS 2022
MIT License
89 stars 15 forks source link

"Runner.exe exited with non-zero status" with certain yaml files #35

Closed ArendPeter closed 1 year ago

ArendPeter commented 1 year ago

Hello,

I'm loading a yaml file at the start of my game using SnapFromYAML, and then after a few minutes of playing the game I get the following error

C:\ProgramData/GameMakerStudio2/Cache/runtimes\runtime-2023.4.0.113/windows/x64/Runner.exe exited with non-zero status (-1073741819)

At first I didn't think this was related to the yaml files but then I read here that the error is usually IO related and that the yaml library was the only IO in my game at the moment.

I found that a small tweak to my yaml made the error stop happening. Here's the 2 yaml varations

Version that caused the error

burn:
- {}
- duration_seconds: 2
  max_stack: 1
  dps: 1
-
  - max_stack+1
-
  - dps+1

freeze:
- {}
- duration_seconds: 2
  max_stack: 1
  slow_rate: .02
-
  - max_stack+1
-
  - slow_rate*1.5

Version that doesn't cause the error

burn:
- {}
- duration_seconds: 2
  max_stack: 1
  dps: 1
-
  - max_stack+1
-
  - dps+1

freeze:
- {}
- duration_seconds: 2
  max_stack: 1
  slow_rate: .02
-
  - max_stack+1
-
  - slow_rate*1.5

I made a git commit with this single change, then I went back and forth. The first variation consistently creates the error after a few minutes of gameplay, and the second one never creates this error

I used this tool to verify that both yaml structures are identical, and I also verified that SNAP compiles the YAML correctly in both cases

My current theory theory is that SNAP doesn't clean up the resources properly after compiling the yaml in some cases, and this can cause errors down the line

I'm sorry I don't have more specific reproduction steps. I might try reproducing the error in a smaller project later this week, but for now I figured I'd report it anyway in case you had any ideas

JujuAdams commented 1 year ago

Crash w/o error message is always a matter for YYG. If SNAP is doing something problematic then this should be reported by GM itself. If you can reproduce in a separate project then I can file a proper report with YYG.

ArendPeter commented 1 year ago

Sounds good, I'll close this for now, and reopen it if I get any updates related to SNAP

ArendPeter commented 1 year ago

I've done some more research, but still no consistent repro. I figured I'd post my findings here anyway

I also did an experiment to see if SNAP was creating a memory leak, but I'd need to run the test more for it to be conclusive

scratch sheet - Sheet15.pdf

I closed the game before loading datafiles, after loading datafiles, and after destroying the structures. For each case I noted Game Maker's memory report. I tried this with both yaml and json files, and it seemed like yaml ended up with more memory left over compared to JSON. That said I only got 3 samples for each scenario (a total of 18 runs), so it's not enough to be sure but thought I'd share anyway

Code: https://pastebin.com/uqLv7S80 (I would comment the yaml/json lines depending on which I was testing) Samples: https://pastebin.com/6b4PGBbt Project: https://drive.google.com/file/d/1ZHoEYjfSSBUS3K6N8PXeLXfVIZhkMpbJ/view?usp=sharing

JujuAdams commented 1 year ago

SNAP doesn't utilise any global variables when parsing so if there's a memory leak that is YYG's side.

If you cannot repro on a smaller project then it's not going to be possible for me to help - please report this crash to YYG yourself.