-
Notifications
You must be signed in to change notification settings - Fork 131
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Intermittent] crash on [State -2] when mashing "recovery" command (PP) while in mid air, in chars that use unpatched CvS/POTS system #658
Comments
Hereis also a log of one occurrence: 2022/08/29 18:16:17 Using OpenGL 4.6 (Compatibility Profile) Mesa 21.2.6 (Mesa Intel(R) HD Graphics 620 (KBL GT2)) stack traceback: goroutine 1 [running, locked to thread]: |
After looking at the stacktrace, repeating the bug a few times, and tweaking the codes of the chars involved, I have a few more details to add, that might be useful:
This code chunk here in char.go (at func (c *Char) actionRun()) is common to all stacktraces I've got so far:
If the issue that I describe here has been reported before, please let me know so I can link accordingly. |
P.S.: I'm not sure how to edit the labels on this issue (nor if I have the required permissions), but I suggest the 'Linux' label to be removed from it. |
That comment in the code is related to an issue with the handling of the "recovery" command itself in Ikemen. I'll make a thread about it eventually unless it gets fixed in the meantime. For the purpose of this bug I think you can ignore it. |
Well, it seems the crashes are related to character constants. When Ikemen attempts to get a character constant (probably via |
Some additional comments:
|
Hey, I found some crashes were happening because char execution expected already-executed chars to have their "minus" field to be 1. Try to build from this branch and let me know if this helps with your issue or if introduces other crashes. https://github.com/Lazin3ss/Ikemen-GO/tree/experimental-fix |
Hi @Lazin3ss , I have successfully built from your branch, and I have still reproduced the crash under the conditions above (Watch mode between 2 tag teams of 4 players): 2022/09/26 18:49:26 Using OpenGL 4.6 (Compatibility Profile) Mesa 21.2.6 (Mesa Intel(R) HD Graphics 620 (KBL GT2)) stack traceback: goroutine 1 [running, locked to thread]: |
Some status update: With the help of git bisect, apparently I've managed to trace the exact commit where the crash issue started to happen. Revisions including and after the commit below present the crash: Author: unknown [email protected]
Revisions before this commit work fine. If I manually revert the changes in this commit in src/char.go, on the current HEAD of master branch, it works fine as well. I'm attaching the patch here just for reference, but of course it's not the ideal solution: ikemen_go_revert_refine_chars_action.txt @Lazin3ss , since you are the author of the original commit, perhaps you may check what might be wrong. |
Indeed, the branch I shared with you was an attempt to fix what was introduced in that commit. This "index out of range [4] with length 0" crash seems to be related to these lines in tag.zss: Lines 326 to 330 in 741670d
If you comment them, the crash should no longer happen, in theory. I've been trying very hard to crash the game with the code from the branch I shared, and I wasn't able. Do you have any particular character/commonStates combination that might make the error trigger? For now, I tried with kfm and ryu_pots. If you could upload your Ikemen GO folder, it would be great. It is best not to revert that commit, but instead improve on it. Reverting it would mean losing assert redirection, among other things. |
OK, I will try that later today, on a clean build from HEAD.
In my experience, kfm and the characters made originally by POTS and recently patched for Ikemen (including ryu_pots) apparently do not cause the crash. But other characters with CvS/POTS but not particularly adapted for Ikemen do. My library of chars is relatively large now (~70 chars) but I will try to narrow down to one single character. If I'm successful with that, I will upload it here.
I totally agree. |
@Lazin3ss , some status update: Regarding the removal of those lines in tag.zss, yes it seemingly fixes the crash in the Tag Team Watch Mode scenario (with the expected side effect of disabling red lifebar regeneration). |
I have also uploaded a minimal set of my Ikemen_GO folder. It has two characters: Gambit and Kaede; and one stage only. If I assemble a tag team of 4 Gambit's vs 4 Kaede's in Watch Mode, I can reproduce the crash 5 out of 5 times; all before the countdown reaches 80. You may download from the following link: https://drive.google.com/file/d/1McWYGzFQun-ydaKP7hs5Gz3gVhSddiTu/view?usp=sharing |
We did various changes that are related to this issue. Hope you can tell us if the issue got fixed on your side or if it still persists. |
Hi @Lazin3ss . Sorry for the long delay on posting the feedback. I've changed my PC since the original report, didn't reinstall Ikemen-GO, and completely forgot about this issue. I'm on a different hardware now, and I don't have the previous build for comparison anymore, so it's not 100% accurate. Anyway, I have cloned the HEAD of Ikemen-GO and built it on my new Linux PC, tested the above steps multiple times, and couldn't find one single crash. So it definitely seems like the crash has been fixed, and I'm going to close the issue. Side note: While trying the steps above (Tag Team 4v4 on Watch Mode), even though I didn't get the crash, rarely did I get the match to actually finish. Often what would happen is the exact same situation described in issue #1043. |
Steps to reproduce:
While playing single arcade mode (character doesn't seem to matter), if I get hit and try mid-air recovery (that is, press M+H or L+M+H punch buttons simultaneously and repeatedly), the engine will sometimes crash before the recovery is event attempted. Crash invariably occurs due to "panic: runtime error: index out of range" at bytecode.go.
Expected behavior:
It should perform the air recovery move (or none, if not applicable to the selected character), instead of crash.
Platform:
I'm specifically using Linux port, but I'm not sure if the issue happens in other platforms. Ikemen-GO Linux compiled from source. I just made sure that the issue still occurs in current HEAD version:
commit 6d0b839 (HEAD -> master, origin/master, origin/HEAD)
Author: K4thos [email protected]
Date: Sun Aug 28 18:18:57 2022 +0200
But it's been happening for quite some time.
Additional context:
I will attach screenshots and stack trace logs.
The text was updated successfully, but these errors were encountered: