AZO234 / NP2kai

Neko Project II kai
http://domisan.sakura.ne.jp/article/np2kai/np2kai.html
MIT License
246 stars 61 forks source link

Crashes when loading saved states #96

Closed BBAlpert closed 4 years ago

BBAlpert commented 4 years ago

I've been noticing that a saved state will sometimes load successfully once or twice, but after that, the program crashes if you try to load it. Sometimes a state will crash the first time you try to load it.

It's not doing anything to create a crash log, but here is a log of a session where I was able to save a state, load that state once, and then crashed when trying to load the state a second time. https://pastebin.com/aA2J0rGy

After the first time a saved state crashes when you try to load it, it will always crash in future attempts to load. A save state always seems to crash at the same "Loading state: __%" number any time you try to load it, but that number doesn't seem consistent between different save states. In other words, one save state might always get to "Loading state: 49%" before crashing, and another save state might always crash at 25%.

I wonder if maybe something about the process of loading the state is corrupting the state file itself? The log does say that after loading a state, it re-saves the file. Maybe it's overwriting the original state with different data? I don't actually know how the system works, I"m just guessing.

Saving seems to be much more reliable than it used to be though, which is good. But a saved state doesn't do all that much good if it can't be loaded. I hope that helps!

AZO234 commented 4 years ago

I checking strange state load working. It seems something variable is not stable.

AZO234 commented 4 years ago

On linux, I found problem of state save/load. But I can't reproduce problen that you said yet.

State loading reads only. Timestump is not modify. It is maybe related CPU/memory/disk caching. I wanna know how work, your machine shutdown and boot, then read that state file.

Thanks!

BBAlpert commented 4 years ago

I just did a full system reboot, started up RetroArch, tried to load the save file, and crashed. But this time I got a crash log from it. Crash log: https://pastebin.com/Hw1ViisB RetroArch session log: https://pastebin.com/JSrnxv0g Windows Event Viewer log of the crash: https://pastebin.com/jJVQiL0f

I would think that maybe it's an issue with RetroArch itself, but I don't have this issue with any other core. I hope there's enough detail in those logs to be helpful.

Thanks!

AZO234 commented 4 years ago

Crash log: https://pastebin.com/Hw1ViisB

It seems problem is FM::OPNA::LoadRhythmSample(). I check there. Thank you information!

Do you use these RhythmSample files?

AZO234 commented 4 years ago

I found ... a bit wonder file closing works. This worse code efficient, probably nothing. But I showed your report, double free executed. Then I fix to don't double free.

I pulled request to libretro. Wait for making binary. And check please.

Regard.

BBAlpert commented 4 years ago

I do use those RhythmSample files.

I'll wait for the libretro update to test.

Thanks again!!!

BBAlpert commented 4 years ago

Oh, something else I've noticed on older games is that instead of crashing RetroArch, it'll occasionally reboot the PC-98 and take you to the "How many files (0-15)?" screen.

This log is me loading the same state file multiple times in a row (waiting a few seconds in between each attempt). About half of the times, it rebooted the PC-98 and took me to the "How many files (0-15)?" screen, and the other half loaded fine. Sorry if I'm making things more complicated for you. https://pastebin.com/hqSKdVur

AZO234 commented 4 years ago

Thanks report! I can see strange working on Linux too.

...why? I'll check.

BBAlpert commented 4 years ago

The updates seem to have made the loading system a LOT more stable and reliable! I still might get an occasional load-crash, particularly if I'm trying to load a state from before the update. But overall, it looks like you fixed whatever was causing the biggest problems.

Thanks so much!