[4.1.2->4.2.3] Random hard crashes with outsidefog

Moderator: GZDoom Developers

Forum rules
Please construct and post a simple demo whenever possible for all bug reports. Please provide links to everything.

If you can include a wad demonstrating the problem, please do so. Bug reports that include fully-constructed demos have a much better chance of being investigated in a timely manner than those that don't.

Please make a new topic for every bug. Don't combine multiple bugs into a single topic. Thanks!
User avatar
Jimmy
 
 
Posts: 4715
Joined: Mon Apr 10, 2006 1:49 pm

Re: [4.1.2->4.2.1] Random hard crashes in maps that use fog

Post by Jimmy »

The crash is persisting in 4.2.3.

Check out the following maps in this Heretic set - E2M6, E2M9, and E3M7. The crashes have suddenly gotten very frequent for me. All you have to do is walk around engaging with gameplay for maybe up to a minute and before long a CTD with no report will occur.

E3M6 is a map with fade as opposed to outsidefog, and hasn't crashed once.

https://www.dropbox.com/s/3qzvc50c9m0p1 ... p.pk3?dl=1

Config:
https://www.dropbox.com/s/cv8a1n6hjh90z ... 9.ini?dl=1

EDIT: If it helps, I've now confirmed that crashes also occur in these maps using the true-color SW renderer.
User avatar
Rachael
Admin
Posts: 13084
Joined: Tue Jan 13, 2004 1:31 pm
Preferred Pronouns: She/Her

Re: [4.1.2->4.2.3] Random hard crashes with outsidefog

Post by Rachael »

Thank you, I will take a look when I can.
User avatar
drfrag
Vintage GZDoom Developer
Posts: 3111
Joined: Fri Apr 23, 2004 3:51 am
Location: Spain

Re: [4.1.2->4.2.3] Random hard crashes with outsidefog

Post by drfrag »

I've reproduced the crash in GZDoom but not in LZDoom, there was another crash and i thought GZDoom was not affected.
It was this commit: "- Fixed another crash in the software renderer now with transparent sprites (Stronghold STR12), it's a bit hacky and now you get a white flash instead."
But might be something else.
User avatar
drfrag
Vintage GZDoom Developer
Posts: 3111
Joined: Fri Apr 23, 2004 3:51 am
Location: Spain

Re: [4.1.2->4.2.3] Random hard crashes with outsidefog

Post by drfrag »

Just got a crash with changemap here in FLevelLocals::DoCompleted, this line:

Code: Select all

	if (deathmatch &&
->		(*dmflags & DF_SAME_LEVEL) &&
		!(flags & LEVEL_CHANGEMAPCHEAT))
I already warned about that, looked suspicious to me.

Code: Select all

>	gzdoom.exe!FLevelLocals::DoCompleted(FString nextlevel, wbstartstruct_t & wminfo) Line 851	C++
 	gzdoom.exe!G_DoCompleted() Line 814	C++
 	gzdoom.exe!G_Ticker() Line 1087	C++
 	gzdoom.exe!TryRunTics() Line 1994	C++
 	gzdoom.exe!D_DoomLoop() Line 1046	C++
 	gzdoom.exe!D_DoomMain_Internal() Line 2807	C++
 	gzdoom.exe!D_DoomMain() Line 2819	C++
 	gzdoom.exe!DoMain(HINSTANCE__ * hInstance) Line 953	C++
 	gzdoom.exe!wWinMain(HINSTANCE__ * hInstance, HINSTANCE__ * nothing, wchar_t * cmdline, int nCmdShow) Line 1281	C++
User avatar
drfrag
Vintage GZDoom Developer
Posts: 3111
Joined: Fri Apr 23, 2004 3:51 am
Location: Spain

Re: [4.1.2->4.2.3] Random hard crashes with outsidefog

Post by drfrag »

Crashes drawing fog boudaries again, takes a while.

Code: Select all

 	[Inline Frame] gzdoom.exe!swrenderer::DrawFogBoundaryLinePalCommand::Execute(DrawerThread *) Line 3012	C++
 	[Inline Frame] gzdoom.exe!DrawerCommandQueue::Push(const swrenderer::SpanDrawerArgs &) Line 207	C++
 	gzdoom.exe!swrenderer::SWPalDrawers::DrawFogBoundaryLine(const swrenderer::SpanDrawerArgs & args) Line 289	C++
 	[Inline Frame] gzdoom.exe!swrenderer::SpanDrawerArgs::DrawFogBoundaryLine(swrenderer::RenderThread * x2, int) Line 149	C++
 	gzdoom.exe!swrenderer::RenderFogBoundary::RenderSection(swrenderer::RenderThread * thread, int y, int y2, int x1) Line 155	C++
>	gzdoom.exe!swrenderer::RenderFogBoundary::Render(swrenderer::RenderThread * thread, int x1, int x2, const short * uclip, const short * dclip, const swrenderer::ProjectedWallLight & wallLight) Line 149	C++
 	gzdoom.exe!swrenderer::RenderDrawSegment::Render(swrenderer::DrawSegment * ds, int x1, int x2, swrenderer::Fake3DTranslucent clip3DFloor) Line 126	C++

		b2	18587	int
		rcolormap	13	int
		t2	0	int
-		this	0x00000029ea4e4860 {spanend=0x00000029ea4e4860 {1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, ...} ...}	swrenderer::RenderFogBoundary *
+		spanend	0x00000029ea4e4860 {1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, ...}	short[5000]
+		drawerargs	{dc_normal={X=9.96917072e-36 Y=9.96917072e-36 Z=9.96917072e-36 } dc_viewpos={X=9.96917072e-36 Y=9.96917072e-36 ...} ...}	swrenderer::SpanDrawerArgs
-		thread	0x000001f47659d050 {Scene=0x000001f476dc6a78 {dontmaplines=false clearcolor=0 Threads={ size=1 } ...} ...}	swrenderer::RenderThread *
+		Scene	0x000001f476dc6a78 {dontmaplines=false clearcolor=0 Threads={ size=1 } ...}	swrenderer::RenderScene *
		X1	0	int
		X2	1366	int
		MainThread	true	bool
+		FrameMemory	unique_ptr {UsedBlocks={ size=2 } FreeBlocks={ size=3 } }	std::unique_ptr<RenderMemory,std::default_delete<RenderMemory> >
+		OpaquePass	unique_ptr {floorclip=0x000001f47736cca0 {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, ...} ...}	std::unique_ptr<swrenderer::RenderOpaquePass,std::default_delete<swrenderer::RenderOpaquePass> >
+		TranslucentPass	unique_ptr {Thread=0x000001f47659d050 {Scene=0x000001f476dc6a78 {dontmaplines=false clearcolor=0 Threads={ size=1 } ...} ...} ...}	std::unique_ptr<swrenderer::RenderTranslucentPass,std::default_delete<swrenderer::RenderTranslucentPass> >
+		SpriteList	unique_ptr {SortedSprites=Size = 71 Sprites=Size = 71 StartIndices=Size = 0 }	std::unique_ptr<swrenderer::VisibleSpriteList,std::default_delete<swrenderer::VisibleSpriteList> >
+		Portal	unique_ptr {Thread=0x000001f47659d050 {Scene=0x000001f476dc6a78 {dontmaplines=false clearcolor=0 Threads={ size=1 } ...} ...} ...}	std::unique_ptr<swrenderer::RenderPortal,std::default_delete<swrenderer::RenderPortal> >
+		Clip3D	unique_ptr {Thread=0x000001f47659d050 {Scene=0x000001f476dc6a78 {dontmaplines=false clearcolor=0 Threads={ size=1 } ...} ...} ...}	std::unique_ptr<swrenderer::Clip3DFloors,std::default_delete<swrenderer::Clip3DFloors> >
+		PlayerSprites	unique_ptr {Thread=0x000001f47659d050 {Scene=0x000001f476dc6a78 {dontmaplines=false clearcolor=0 Threads={ size=1 } ...} ...} ...}	std::unique_ptr<swrenderer::RenderPlayerSprites,std::default_delete<swrenderer::RenderPlayerSprites> >
+		PlaneList	unique_ptr {Thread=0x000001f47659d050 {Scene=0x000001f476dc6a78 {dontmaplines=false clearcolor=0 Threads={ size=1 } ...} ...} ...}	std::unique_ptr<swrenderer::VisiblePlaneList,std::default_delete<swrenderer::VisiblePlaneList> >
+		DrawSegments	unique_ptr {SegmentGroups=Size = 1 Thread=0x000001f47659d050 {Scene=0x000001f476dc6a78 {dontmaplines=false clearcolor=...} ...} ...}	std::unique_ptr<swrenderer::DrawSegmentList,std::default_delete<swrenderer::DrawSegmentList> >
+		ClipSegments	unique_ptr {newend=0x000001f4772d8428 {first=0 last=0 } solidsegs=0x000001f4772d8408 {{first=-32767 last=32767 }, ...} }	std::unique_ptr<swrenderer::RenderClipSegment,std::default_delete<swrenderer::RenderClipSegment> >
+		Viewport	unique_ptr {WorldToView={Matrix=0x000001f476b19020 {-0.990902662, 0.000000000, 0.134580702, 0.000000000, 0.134580702, ...} } ...}	std::unique_ptr<swrenderer::RenderViewport,std::default_delete<swrenderer::RenderViewport> >
+		Light	unique_ptr {BaseVisibility=8.0000000000000000 WallVisibility=1761.5946335280241 FloorVisibility=2.1361814905496854 ...}	std::unique_ptr<swrenderer::LightVisibility,std::default_delete<swrenderer::LightVisibility> >
+		DrawQueue	shared_ptr {commands={ size=0 } FrameMemory=0x000001f46e75d960 {UsedBlocks={ size=2 } FreeBlocks={ size=3 } } } [3 strong refs] [default]	std::shared_ptr<DrawerCommandQueue>
+		AddedLightsArray	Size = 0	TArray<FDynamicLight *,FDynamicLight *>
+		thread	{_Thr={_Hnd=0x0000000000000000 _Id=0 } }	std::thread
+		clipbot	0x000001f47659d0f8 {707, 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, ...}	short[12000]
+		cliptop	0x000001f4765a2eb8 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ...}	short[12000]
+		tc_drawers	unique_ptr {...}	std::unique_ptr<swrenderer::SWTruecolorDrawers,std::default_delete<swrenderer::SWTruecolorDrawers> >
+		pal_drawers	unique_ptr {...}	std::unique_ptr<swrenderer::SWPalDrawers,std::default_delete<swrenderer::SWPalDrawers> >
		x1	1365	int
BTW 240 tall skies are not properly stretched (r_skymode 1), will fix it later, i said tall skies needed testing. There's another one 544 pixels tall but that's too big.
User avatar
drfrag
Vintage GZDoom Developer
Posts: 3111
Joined: Fri Apr 23, 2004 3:51 am
Location: Spain

Re: [4.1.2->4.2.3] Random hard crashes with outsidefog

Post by drfrag »

Any wad with a 256 pixel tall sky for testing? To find the new "magic numbers".
User avatar
Graf Zahl
Lead GZDoom+Raze Developer
Lead GZDoom+Raze Developer
Posts: 48326
Joined: Sat Jul 19, 2003 10:19 am
Location: Germany

Re: [4.1.2->4.2.3] Random hard crashes with outsidefog

Post by Graf Zahl »

Open Paint, create image of size 256x256, save as sky1.png and put it in a zip inside the textures/ folder.
User avatar
drfrag
Vintage GZDoom Developer
Posts: 3111
Joined: Fri Apr 23, 2004 3:51 am
Location: Spain

Re: [4.1.2->4.2.3] Random hard crashes with outsidefog

Post by drfrag »

I know why it doesn't crash in LZDoom, i disabled models by default for the Carmack renderer with a new CVAR.

Return to “Classic ("Carmack") Software Renderer Bugs”