crash with soundless mound

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
drfrag
Vintage GZDoom Developer
Posts: 3150
Joined: Fri Apr 23, 2004 3:51 am
Location: Spain

crash with soundless mound

Post by drfrag »

I've found a crash in software mode with soundless mound (soundless_m.pk7). viewtopic.php?f=19&t=60219
In hardware GL mode i get an assert failure instead, gl_walls_draw.cpp:53, assert(wall->vertcount > 0);
I think it's the same problem. Warp to x=7500,y=9500 (that room) and turn around to reproduce.
This is a crash log for the vintage build, modern also crashes.

Code: Select all

>	gzdoom.exe!swrenderer::RenderDrawSegment::RenderWall(swrenderer::DrawSegment * ds, int x1, int x2, swrenderer::WallDrawerArgs & walldrawerargs, swrenderer::SpriteDrawerArgs & columndrawerargs, bool visible, FDynamicColormap * basecolormap, int wallshade) Line 338	C++
 	gzdoom.exe!swrenderer::RenderDrawSegment::Render(swrenderer::DrawSegment * ds, int x1, int x2, swrenderer::Fake3DTranslucent clip3DFloor) Line 143	C++
 	gzdoom.exe!swrenderer::VisibleSprite::Render(swrenderer::RenderThread * thread, swrenderer::Fake3DTranslucent clip3DFloor) Line 332	C++
 	gzdoom.exe!swrenderer::RenderTranslucentPass::DrawMaskedSingle(bool renew, swrenderer::Fake3DTranslucent clip3DFloor) Line 148	C++
 	gzdoom.exe!swrenderer::RenderTranslucentPass::Render() Line 215	C++
 	gzdoom.exe!swrenderer::RenderScene::RenderThreadSlice(swrenderer::RenderThread * thread) Line 313	C++
 	gzdoom.exe!swrenderer::RenderScene::RenderThreadSlices() Line 246	C++
 	gzdoom.exe!swrenderer::RenderScene::RenderActorView(AActor * actor, bool dontmaplines) Line 185	C++
 	gzdoom.exe!swrenderer::RenderScene::RenderView(player_t * player, DCanvas * target, void * videobuffer) Line 134	C++
 	gzdoom.exe!FSoftwareRenderer::RenderView(player_t * player, DCanvas * target, void * videobuffer) Line 175	C++
 	gzdoom.exe!SWSceneDrawer::RenderView(player_t * player) Line 120	C++
 	gzdoom.exe!FGLRenderer::RenderView(player_t * player) Line 300	C++
 	gzdoom.exe!OpenGLFrameBuffer::RenderView(player_t * player) Line 222	C++
 	gzdoom.exe!D_Display() Line 796	C++
 	gzdoom.exe!D_DoomLoop() Line 1038	C++
 	gzdoom.exe!D_DoomMain() Line 2714	C++
 	gzdoom.exe!DoMain(HINSTANCE__ * hInstance) Line 1027	C++
 	gzdoom.exe!WinMain(HINSTANCE__ * hInstance, HINSTANCE__ * nothing, char * cmdline, int nCmdShow) Line 1342	C++

-		MaskedSWall	0xfffff7d8 {???}	float *
			<Unable to read memory>	float
		MaskedScaleY	0.000000000	float
-		basecolormap	0x0b6fbe70 {Next=0x0b6fbdf0 {Next=0x0b6fb1f0 {Next=0x00000000 <NULL> } } }	FDynamicColormap *
+		FSWColormap	{Maps=0x0b13c700 "÷\x1\x2\x3\x4\x5\x6\a\b\t\n\v\f\r\xe\xf\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§\x4©ª«¬­®¯°±²³´µ¶·¸¹º»¼½-/ÀÁÂÃÄÅÆÇ... ...}	FSWColormap
+		Next	0x0b6fbdf0 {Next=0x0b6fb1f0 {Next=0x00000000 <NULL> } }	FDynamicColormap *
-		columndrawerargs	{dc_dest=0x00000000 <NULL> dc_dest_y=0 dc_count=0 ...}	swrenderer::SpriteDrawerArgs &
+		swrenderer::DrawerArgs	{mBaseColormap=0x0b6fbe70 {Maps=0x0b13c700 "÷\x1\x2\x3\x4\x5\x6\a\b\t\n\v\f\r\xe\xf\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§\x4©ª«¬­®¯°±²³´µ¶·¸¹º»¼½-/ÀÁÂÃÄÅÆÇ... ...} ...}	swrenderer::DrawerArgs
+		dc_dest	0x00000000 <NULL>	unsigned char *
		dc_dest_y	0	int
		dc_count	0	int
		dc_iscale	-858993460	int
		dc_texturefrac	-858993460	int
		dc_texturefracx	3435973836	unsigned int
		dc_textureheight	0	unsigned int
+		dc_source	0x00000000 <NULL>	const unsigned char *
+		dc_source2	0x00000000 <NULL>	const unsigned char *
		drawer_needs_pal_input	false	bool
+		dc_srcblend	0x00000000 {???}	unsigned int *
+		dc_destblend	0x00000000 {???}	unsigned int *
		dc_srcalpha	65536	int
		dc_destalpha	0	int
		dc_x	0	int
		dc_yl	0	int
		dc_yh	0	int
		dc_color	0	int
		dc_color_bgra	0	unsigned int
		dc_srccolor	0	unsigned int
		dc_srccolor_bgra	0	unsigned int
		dynlightcolor	0	unsigned int
		colfunc	0x00cad1fc {gzdoom.exe![thunk]:swrenderer::SWPixelFormatDrawers::`vcall'{36,{flat}}' }'}	void(swrenderer::SWPixelFormatDrawers::*)(const swrenderer::SpriteDrawerArgs &)
+		dc_viewport	0x00000000 <NULL>	swrenderer::RenderViewport *
		iscale	-858993460	int
		rw_light	1.85609853	float
-		this	0x0070b6bc {Thread=0x0aa50068 {Scene=0x0b11d50c {dontmaplines=false clearcolor=0 Threads={ size=1 } ...} ...} ...}	swrenderer::RenderDrawSegment *
+		Thread	0x0aa50068 {Scene=0x0b11d50c {dontmaplines=false clearcolor=0 Threads={ size=1 } ...} X1=0 X2=640 ...}	swrenderer::RenderThread *
+		frontsector	0x0fc62bd0 {planes=0x0fc62bd0 {{xform={xOffs=0.00000000000000000 yOffs=0.00000000000000000 baseyOffs=...} ...}, ...} ...}	sector_t *
+		backsector	0x0fc61ba0 {planes=0x0fc61ba0 {{xform={xOffs=0.00000000000000000 yOffs=0.00000000000000000 baseyOffs=...} ...}, ...} ...}	sector_t *
+		curline	0x1b25601c {v1=0x1b0c17a0 {p={X=6688.0000000000000 Y=9456.0000000000000 } viewangle=0 angletime=0 ...} ...}	seg_t *
+		m3DFloor	{clipBottom=false clipTop=true down2Up=true ...}	swrenderer::Fake3DTranslucent
+		WallC	{tleft={X=-107374176. Y=-107374176. } tright={X=-107374176. Y=-107374176. } sz1=689.618591 ...}	swrenderer::FWallCoords
+		WallT	{UoverZorg=-107374176. UoverZstep=-107374176. InvZorg=-107374176. ...}	swrenderer::FWallTmapVals
		rw_light	1.85609853	float
		rw_lightstep	0.00274933269	float
		rw_offset	0	int
+		rw_pic	0x00000000 <NULL>	FTexture *
+		wallupper	{ScreenY=0x0070b720 {-13108, -13108, -13108, -13108, -13108, -13108, -13108, -13108, -13108, -13108, ...} }	swrenderer::ProjectedWallLine
+		walllower	{ScreenY=0x007114e0 {-13108, -13108, -13108, -13108, -13108, -13108, -13108, -13108, -13108, -13108, ...} }	swrenderer::ProjectedWallLine
		wallshade	2949120	int
		x	522	int
User avatar
Marisa the Magician
Posts: 3886
Joined: Fri Feb 08, 2008 9:15 am
Preferred Pronouns: She/Her
Operating System Version (Optional): (btw I use) Arch
Graphics Processor: nVidia with Vulkan support
Location: Vigo, Galicia

Re: crash with soundless mound

Post by Marisa the Magician »

Going to see if I can get more details for this on my end, this might be some hidden bug that only popped up because of the specific fog setup I used in that spot.

Edit: From what I got, there's something wrong with drawing line 9174. That's weird, it's just an invisible two-sided line.

PS: I cannot reproduce the crash on OpenGL.
User avatar
drfrag
Vintage GZDoom Developer
Posts: 3150
Joined: Fri Apr 23, 2004 3:51 am
Location: Spain

Re: crash with soundless mound

Post by drfrag »

It won't crash in hardware mode, just gives an assertion failure with debug builds.
User avatar
Marisa the Magician
Posts: 3886
Joined: Fri Feb 08, 2008 9:15 am
Preferred Pronouns: She/Her
Operating System Version (Optional): (btw I use) Arch
Graphics Processor: nVidia with Vulkan support
Location: Vigo, Galicia

Re: crash with soundless mound

Post by Marisa the Magician »

I'm doing debug builds but I get no such assert, maybe it's just a Windows thing.
User avatar
drfrag
Vintage GZDoom Developer
Posts: 3150
Joined: Fri Apr 23, 2004 3:51 am
Location: Spain

Re: crash with soundless mound

Post by drfrag »

Or may be the assertion only appears in the vintage build then... I get it with both VS and MinGW.
User avatar
drfrag
Vintage GZDoom Developer
Posts: 3150
Joined: Fri Apr 23, 2004 3:51 am
Location: Spain

Re: crash with soundless mound

Post by drfrag »

Since the crash only happens in software mode (Carmack renderer only) now i think it's better to move this to Software Renderer Bugs.
User avatar
Rachael
Posts: 13793
Joined: Tue Jan 13, 2004 1:31 pm
Preferred Pronouns: She/Her

Re: crash with soundless mound

Post by Rachael »

Done.
User avatar
Rachael
Posts: 13793
Joined: Tue Jan 13, 2004 1:31 pm
Preferred Pronouns: She/Her

Re: crash with soundless mound

Post by Rachael »

Okay, so I don't know what's going on here, but this does not crash on the modern branch. I tried to copy the swrenderer folder in full to the Legacy branch but that does not appear to fix it. The variable that's buggering up is "MaskedSWall", my guess is, it's a thread data that's deallocating before its thread gets executed. Or perhaps it has something to do with being 32-bit vs 64-bit.
User avatar
drfrag
Vintage GZDoom Developer
Posts: 3150
Joined: Fri Apr 23, 2004 3:51 am
Location: Spain

Re: crash with soundless mound

Post by drfrag »

Last time i checked it still crashed in the modern version, it's the same renderer and even crashes in LZDoom.
I've just checked again with the latest devbuild and still crashes as expected, this is a 32 bit build.
Fun fact: this is an old GL 3.3 ati card and now i only get a blob with colored dots, i expected it to run at least in software mode. I've blindly warped to that location and looked around to reproduce the crash.

Edit: i thought this was intentional but now i've made a bug report. Just tested soundless mound with gzdoom-g3.6pre-57-g2d1043d1d.7z (that one runs properly here) and soundless mound still crashes.
User avatar
drfrag
Vintage GZDoom Developer
Posts: 3150
Joined: Fri Apr 23, 2004 3:51 am
Location: Spain

Re: crash with soundless mound

Post by drfrag »

I've tried the latest x64 vintage devbuild on my laptop and it doesn't crash so it's a 32 bit only thing at least with VS. Earlier i tried the modern 32 bit one and it crashed.

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