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
[Bug] Signal 11 crash with "Stickney Installation" #732
Comments
Very good bug report, thank you! Nevertheless, I cannot reproduce this issue with my 64-bit Linux build, even though precisely following your detailed instructions. Do you have anything in your autoload directories that might cause trouble? |
I have some files in my autoload dirs, but they are purely cosmetic and shouldn't have any major impact on gameplay. Included are:
|
I reproduce it, it crashes for me right on woofsav0 load. Backtrace:
|
Oh, wow! What could go wrong here? |
Here |
I guess we need to convert Line 2693 in 347e430
@fabiangreffrath Can't you reproduce it? Every save load crashes for me here with uncapped. |
the comment on dw brought me here I've noticed that the ENDOOM screen is severly corrupted when exiting removing the ENDOOM lump seems to prevent the game from crashing |
But I can't find ENDOOM lump in stickney.wad |
I'm using the wad from the "StickneyE3V2.zip" linked in the wad's dw topic |
Right, "StickneyE3V2.zip" has broken ENDOOM lump. |
Yes, I have seen the crash meanwhile, though only very sporadically. Apparently, thinkers are recreated when a savegame is loaded. Strange that I have never encountered this when I tested my patch with a savegame of E2M4. |
This patch fixes it for me: diffdiff --git a/src/p_saveg.c b/src/p_saveg.c
index c625369..d9a5e50 100644
--- a/src/p_saveg.c
+++ b/src/p_saveg.c
@@ -2574,6 +2574,8 @@ void P_UnArchiveSpecials (void)
{
byte tclass;
+ P_FreeSideScrollers();
+
// read in saved thinkers
while ((tclass = saveg_read8()) != tc_endspecials) // killough 2/14/98
switch (tclass)
@@ -2693,6 +2695,7 @@ void P_UnArchiveSpecials (void)
saveg_read_scroll_t(scroll);
scroll->thinker.function.p1 = (actionf_p1)T_Scroll;
P_AddThinker(&scroll->thinker);
+ P_AddSideScroller(scroll);
break;
}
diff --git a/src/p_spec.c b/src/p_spec.c
index c524ff6..722f316 100644
--- a/src/p_spec.c
+++ b/src/p_spec.c
@@ -2646,7 +2646,7 @@ void T_Scroll(scroll_t *s)
static int maxsidescrollers, numsidescrollers;
static scroll_t **sidescrollers;
-static void P_AddSideScroller (scroll_t *s)
+void P_AddSideScroller (scroll_t *s)
{
if (numsidescrollers == maxsidescrollers)
{
@@ -2656,7 +2656,7 @@ static void P_AddSideScroller (scroll_t *s)
sidescrollers[numsidescrollers++] = s;
}
-static void P_FreeSideScrollers (void)
+void P_FreeSideScrollers (void)
{
maxsidescrollers = 0;
numsidescrollers = 0;
diff --git a/src/p_spec.h b/src/p_spec.h
index 96039d0..4fd4077 100644
--- a/src/p_spec.h
+++ b/src/p_spec.h
@@ -864,6 +864,10 @@ void T_Friction(friction_t *); // phares 3/12/98: friction thinker
void T_Pusher(pusher_t *); // phares 3/20/98: Push thinker
+void P_FreeSideScrollers(void);
+
+void P_AddSideScroller(scroll_t *s);
+
////////////////////////////////////////////////////////////////
//
// Linedef and sector special handler prototypes |
Perfect, please apply! 👍 |
NB: Please add a check to only add |
For clearification: Anyway, the crash would happen without it as well. |
Seems fixed with latest dev snapshot. Thanks, guys! |
On E1M2 of "Stickney Installation", you get a crash to desktop with the following message after strafe-running across a slime pool with some platforms:
"I_Signalhandler: Exit on illegal storage access (Signal 11)"
Used Woof release:
Latest Win64 workflow snapshot from "Master" branch (3046909730)
To reproduce:
Notes:
woof.exe -iwad "../../iwad/doom.wad" -file "../../pwad/doom/stickney.wad" -complevel 2
The attached zipfile contains:
stickney_test.zip
The text was updated successfully, but these errors were encountered: