doomretro
doomretro copied to clipboard
Many memory errors have sprung up again
I managed to reduce the amount of memory errors to about 18 or so (34ae3e5179e4c75240e01f75d220c8993e373614), but now they're up to 54 as of b7a5653efc7f99699664a75be032a01c51971a63.
54?? Can I ask what parameters you use for Valgrind? Or are you doing something different? I run the following (now that I can) and get 12:
valgrind --leak-check=full --show-leak-kinds=all ./doomretro
I've been using --track-origins=yes
in place of --show-leak-kinds=all
. Mind you, a lot of my own extra errors are coming from SDL and my GPU. Still, several memory errors of the Conditional jump or move depends on uninitialised value(s)
type were introduced.
I'm only getting one Conditional jump or move depends on uninitialised value(s)
, and plenty of the SDL and GPU errors. Could you dump the entire output from Valgrind here please? I'll try to make my way through it.
This is with valgrind --leak-check=full --track-origins=yes doomretro -iwad DOOM2.WAD
==24020== Conditional jump or move depends on uninitialised value(s)
==24020== at 0x5559CF9: strlen (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==24020== by 0x6301204: fputs (iofputs.c:33)
==24020== by 0x17E01E: M_SaveCVARs (m_config.c:448)
==24020== by 0x16B492: D_DoomMainSetup (d_main.c:1769)
==24020== by 0x16C838: D_DoomMain (d_main.c:2086)
==24020== by 0x16C868: main (doomretro.c:288)
==24020== Uninitialised value was created by a stack allocation
==24020== at 0x62A3100: ??? (in /lib/x86_64-linux-gnu/libc-2.27.so)
==24020==
==24020== Conditional jump or move depends on uninitialised value(s)
==24020== at 0x62B260F: tolower (ctype.c:46)
==24020== by 0x555A61D: strcasecmp (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==24020== by 0x1895AD: M_StringCompare (m_misc.c:450)
==24020== by 0x17B0D6: GetWindowPosition (i_video.c:1148)
==24020== by 0x17B970: SetVideoMode (i_video.c:1351)
==24020== by 0x17D0C4: I_InitGraphics (i_video.c:1887)
==24020== by 0x16B8AD: D_DoomMainSetup (d_main.c:1829)
==24020== by 0x16C838: D_DoomMain (d_main.c:2086)
==24020== by 0x16C868: main (doomretro.c:288)
==24020== Uninitialised value was created by a stack allocation
==24020== at 0x17B790: SetVideoMode (i_video.c:1301)
==24020==
==24020== Use of uninitialised value of size 8
==24020== at 0x62B2623: tolower (ctype.c:46)
==24020== by 0x555A61D: strcasecmp (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==24020== by 0x1895AD: M_StringCompare (m_misc.c:450)
==24020== by 0x17B0D6: GetWindowPosition (i_video.c:1148)
==24020== by 0x17B970: SetVideoMode (i_video.c:1351)
==24020== by 0x17D0C4: I_InitGraphics (i_video.c:1887)
==24020== by 0x16B8AD: D_DoomMainSetup (d_main.c:1829)
==24020== by 0x16C838: D_DoomMain (d_main.c:2086)
==24020== by 0x16C868: main (doomretro.c:288)
==24020== Uninitialised value was created by a stack allocation
==24020== at 0x17B790: SetVideoMode (i_video.c:1301)
==24020==
==24020== Conditional jump or move depends on uninitialised value(s)
==24020== at 0x62B260F: tolower (ctype.c:46)
==24020== by 0x555A61D: strcasecmp (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==24020== by 0x1895AD: M_StringCompare (m_misc.c:450)
==24020== by 0x17B0F0: GetWindowPosition (i_video.c:1148)
==24020== by 0x17B970: SetVideoMode (i_video.c:1351)
==24020== by 0x17D0C4: I_InitGraphics (i_video.c:1887)
==24020== by 0x16B8AD: D_DoomMainSetup (d_main.c:1829)
==24020== by 0x16C838: D_DoomMain (d_main.c:2086)
==24020== by 0x16C868: main (doomretro.c:288)
==24020== Uninitialised value was created by a stack allocation
==24020== at 0x17B790: SetVideoMode (i_video.c:1301)
==24020==
==24020== Use of uninitialised value of size 8
==24020== at 0x62B2623: tolower (ctype.c:46)
==24020== by 0x555A61D: strcasecmp (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==24020== by 0x1895AD: M_StringCompare (m_misc.c:450)
==24020== by 0x17B0F0: GetWindowPosition (i_video.c:1148)
==24020== by 0x17B970: SetVideoMode (i_video.c:1351)
==24020== by 0x17D0C4: I_InitGraphics (i_video.c:1887)
==24020== by 0x16B8AD: D_DoomMainSetup (d_main.c:1829)
==24020== by 0x16C838: D_DoomMain (d_main.c:2086)
==24020== by 0x16C868: main (doomretro.c:288)
==24020== Uninitialised value was created by a stack allocation
==24020== at 0x17B790: SetVideoMode (i_video.c:1301)
==24020==
==24020== Conditional jump or move depends on uninitialised value(s)
==24020== at 0x555E05A: rawmemchr (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==24020== by 0x6312351: _IO_str_init_static_internal (strops.c:41)
==24020== by 0x62FE60C: __isoc99_vsscanf (isoc99_vsscanf.c:41)
==24020== by 0x62FE573: __isoc99_sscanf (isoc99_sscanf.c:31)
==24020== by 0x17B130: GetWindowPosition (i_video.c:1153)
==24020== by 0x17B970: SetVideoMode (i_video.c:1351)
==24020== by 0x17D0C4: I_InitGraphics (i_video.c:1887)
==24020== by 0x16B8AD: D_DoomMainSetup (d_main.c:1829)
==24020== by 0x16C838: D_DoomMain (d_main.c:2086)
==24020== by 0x16C868: main (doomretro.c:288)
==24020== Uninitialised value was created by a stack allocation
==24020== at 0x17B790: SetVideoMode (i_video.c:1301)
==24020==
==24020== Conditional jump or move depends on uninitialised value(s)
==24020== at 0x5559CF9: strlen (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==24020== by 0x6301204: fputs (iofputs.c:33)
==24020== by 0x17E01E: M_SaveCVARs (m_config.c:448)
==24020== by 0x17B15C: GetWindowPosition (i_video.c:1158)
==24020== by 0x17B970: SetVideoMode (i_video.c:1351)
==24020== by 0x17D0C4: I_InitGraphics (i_video.c:1887)
==24020== by 0x16B8AD: D_DoomMainSetup (d_main.c:1829)
==24020== by 0x16C838: D_DoomMain (d_main.c:2086)
==24020== by 0x16C868: main (doomretro.c:288)
==24020== Uninitialised value was created by a stack allocation
==24020== at 0x17B790: SetVideoMode (i_video.c:1301)
==24020==
==24020== Conditional jump or move depends on uninitialised value(s)
==24020== at 0x5559CF9: strlen (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==24020== by 0x6301204: fputs (iofputs.c:33)
==24020== by 0x17E01E: M_SaveCVARs (m_config.c:448)
==24020== by 0x17B2CC: GetWindowSize (i_video.c:1177)
==24020== by 0x17B975: SetVideoMode (i_video.c:1352)
==24020== by 0x17D0C4: I_InitGraphics (i_video.c:1887)
==24020== by 0x16B8AD: D_DoomMainSetup (d_main.c:1829)
==24020== by 0x16C838: D_DoomMain (d_main.c:2086)
==24020== by 0x16C868: main (doomretro.c:288)
==24020== Uninitialised value was created by a stack allocation
==24020== at 0x17B790: SetVideoMode (i_video.c:1301)
==24020==
==24020== Conditional jump or move depends on uninitialised value(s)
==24020== at 0x62B260F: tolower (ctype.c:46)
==24020== by 0x555A61D: strcasecmp (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==24020== by 0x1895AD: M_StringCompare (m_misc.c:450)
==24020== by 0x17B4EA: GetScreenResolution (i_video.c:1232)
==24020== by 0x17B97A: SetVideoMode (i_video.c:1353)
==24020== by 0x17D0C4: I_InitGraphics (i_video.c:1887)
==24020== by 0x16B8AD: D_DoomMainSetup (d_main.c:1829)
==24020== by 0x16C838: D_DoomMain (d_main.c:2086)
==24020== by 0x16C868: main (doomretro.c:288)
==24020== Uninitialised value was created by a stack allocation
==24020== at 0x17B790: SetVideoMode (i_video.c:1301)
==24020==
==24020== Use of uninitialised value of size 8
==24020== at 0x62B2623: tolower (ctype.c:46)
==24020== by 0x555A61D: strcasecmp (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==24020== by 0x1895AD: M_StringCompare (m_misc.c:450)
==24020== by 0x17B4EA: GetScreenResolution (i_video.c:1232)
==24020== by 0x17B97A: SetVideoMode (i_video.c:1353)
==24020== by 0x17D0C4: I_InitGraphics (i_video.c:1887)
==24020== by 0x16B8AD: D_DoomMainSetup (d_main.c:1829)
==24020== by 0x16C838: D_DoomMain (d_main.c:2086)
==24020== by 0x16C868: main (doomretro.c:288)
==24020== Uninitialised value was created by a stack allocation
==24020== at 0x17B790: SetVideoMode (i_video.c:1301)
==24020==
==24020== Conditional jump or move depends on uninitialised value(s)
==24020== at 0x5559CF9: strlen (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==24020== by 0x6301204: fputs (iofputs.c:33)
==24020== by 0x17E01E: M_SaveCVARs (m_config.c:448)
==24020== by 0x17B577: GetScreenResolution (i_video.c:1247)
==24020== by 0x17B97A: SetVideoMode (i_video.c:1353)
==24020== by 0x17D0C4: I_InitGraphics (i_video.c:1887)
==24020== by 0x16B8AD: D_DoomMainSetup (d_main.c:1829)
==24020== by 0x16C838: D_DoomMain (d_main.c:2086)
==24020== by 0x16C868: main (doomretro.c:288)
==24020== Uninitialised value was created by a stack allocation
==24020== at 0x17B790: SetVideoMode (i_video.c:1301)
==24020==
==24020== Conditional jump or move depends on uninitialised value(s)
==24020== at 0x162D4B: dehfeof (d_deh.c:105)
==24020== by 0x167BD6: deh_procStrings (d_deh.c:3424)
==24020== by 0x163399: ProcessDehFile (d_deh.c:2112)
==24020== by 0x16AE7D: D_ProcessDehInWad (d_main.c:1599)
==24020== by 0x16B8BC: D_DoomMainSetup (d_main.c:1833)
==24020== by 0x16C838: D_DoomMain (d_main.c:2086)
==24020== by 0x16C868: main (doomretro.c:288)
==24020== Uninitialised value was created by a heap allocation
==24020== at 0x5556B0F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==24020== by 0x1DEA65: Z_Malloc (z_zone.c:82)
==24020== by 0x1DC3AA: W_CacheLumpNum (w_wad.c:487)
==24020== by 0x162E98: ProcessDehFile (d_deh.c:2005)
==24020== by 0x16AE7D: D_ProcessDehInWad (d_main.c:1599)
==24020== by 0x16B8BC: D_DoomMainSetup (d_main.c:1833)
==24020== by 0x16C838: D_DoomMain (d_main.c:2086)
==24020== by 0x16C868: main (doomretro.c:288)
==24020==
==24020== Conditional jump or move depends on uninitialised value(s)
==24020== at 0x162C39: dehfgets (d_deh.c:81)
==24020== by 0x1633DE: ProcessDehFile (d_deh.c:2032)
==24020== by 0x16AE7D: D_ProcessDehInWad (d_main.c:1599)
==24020== by 0x16B8BC: D_DoomMainSetup (d_main.c:1833)
==24020== by 0x16C838: D_DoomMain (d_main.c:2086)
==24020== by 0x16C868: main (doomretro.c:288)
==24020== Uninitialised value was created by a heap allocation
==24020== at 0x5556B0F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==24020== by 0x1DEA65: Z_Malloc (z_zone.c:82)
==24020== by 0x1DC3AA: W_CacheLumpNum (w_wad.c:487)
==24020== by 0x162E98: ProcessDehFile (d_deh.c:2005)
==24020== by 0x16AE7D: D_ProcessDehInWad (d_main.c:1599)
==24020== by 0x16B8BC: D_DoomMainSetup (d_main.c:1833)
==24020== by 0x16C838: D_DoomMain (d_main.c:2086)
==24020== by 0x16C868: main (doomretro.c:288)
==24020==
==24020== Conditional jump or move depends on uninitialised value(s)
==24020== at 0x1D1B76: SC_GetString (sc_man.c:117)
==24020== by 0x1C072F: R_InitSpriteLumps (r_data.c:447)
==24020== by 0x1C106E: R_InitData (r_data.c:661)
==24020== by 0x1C6ADB: R_Init (r_main.c:703)
==24020== by 0x16C4CB: D_DoomMainSetup (d_main.c:2005)
==24020== by 0x16C838: D_DoomMain (d_main.c:2086)
==24020== by 0x16C868: main (doomretro.c:288)
==24020== Uninitialised value was created by a heap allocation
==24020== at 0x5556B0F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==24020== by 0x1DEA65: Z_Malloc (z_zone.c:82)
==24020== by 0x1DC3AA: W_CacheLumpNum (w_wad.c:487)
==24020== by 0x1D19EF: SC_Open (sc_man.c:72)
==24020== by 0x1C05FB: R_InitSpriteLumps (r_data.c:445)
==24020== by 0x1C106E: R_InitData (r_data.c:661)
==24020== by 0x1C6ADB: R_Init (r_main.c:703)
==24020== by 0x16C4CB: D_DoomMainSetup (d_main.c:2005)
==24020== by 0x16C838: D_DoomMain (d_main.c:2086)
==24020== by 0x16C868: main (doomretro.c:288)
==24020==
==24020== Conditional jump or move depends on uninitialised value(s)
==24020== at 0x1D1B76: SC_GetString (sc_man.c:117)
==24020== by 0x1B36D1: P_InitPicAnims (p_spec.c:313)
==24020== by 0x1B22FC: P_Init (p_setup.c:2682)
==24020== by 0x16C4D0: D_DoomMainSetup (d_main.c:2007)
==24020== by 0x16C838: D_DoomMain (d_main.c:2086)
==24020== by 0x16C868: main (doomretro.c:288)
==24020== Uninitialised value was created by a heap allocation
==24020== at 0x5556B0F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==24020== by 0x1DEA65: Z_Malloc (z_zone.c:82)
==24020== by 0x1DC3AA: W_CacheLumpNum (w_wad.c:487)
==24020== by 0x1D19EF: SC_Open (sc_man.c:72)
==24020== by 0x1C05FB: R_InitSpriteLumps (r_data.c:445)
==24020== by 0x1C106E: R_InitData (r_data.c:661)
==24020== by 0x1C6ADB: R_Init (r_main.c:703)
==24020== by 0x16C4CB: D_DoomMainSetup (d_main.c:2005)
==24020== by 0x16C838: D_DoomMain (d_main.c:2086)
==24020== by 0x16C868: main (doomretro.c:288)
==24020==
==24020== Conditional jump or move depends on uninitialised value(s)
==24020== at 0x5559CF9: strlen (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==24020== by 0x6301204: fputs (iofputs.c:33)
==24020== by 0x17E01E: M_SaveCVARs (m_config.c:448)
==24020== by 0x142486: AM_GetGridSize (am_map.c:385)
==24020== by 0x1424C6: AM_Init (am_map.c:395)
==24020== by 0x16C4E4: D_DoomMainSetup (d_main.c:2015)
==24020== by 0x16C838: D_DoomMain (d_main.c:2086)
==24020== by 0x16C868: main (doomretro.c:288)
==24020== Uninitialised value was created by a stack allocation
==24020== at 0x62A3100: ??? (in /lib/x86_64-linux-gnu/libc-2.27.so)
==24020==
==24020== Conditional jump or move depends on uninitialised value(s)
==24020== at 0x5559D08: strlen (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==24020== by 0x6301204: fputs (iofputs.c:33)
==24020== by 0x17E01E: M_SaveCVARs (m_config.c:448)
==24020== by 0x142486: AM_GetGridSize (am_map.c:385)
==24020== by 0x1424C6: AM_Init (am_map.c:395)
==24020== by 0x16C4E4: D_DoomMainSetup (d_main.c:2015)
==24020== by 0x16C838: D_DoomMain (d_main.c:2086)
==24020== by 0x16C868: main (doomretro.c:288)
==24020== Uninitialised value was created by a stack allocation
==24020== at 0x62A3100: ??? (in /lib/x86_64-linux-gnu/libc-2.27.so)
==24020==
fluidsynth: warning: Failed to pin the sample data to RAM; swapping is possible.
fluidsynth: error: Unable to open file "/usr/share/sounds/sf2/TimGM6mb.sf2"
fluidsynth: error: Couldn't load soundfont file
fluidsynth: error: Failed to load SoundFont "/usr/share/sounds/sf2/TimGM6mb.sf2"
fluidsynth: error: Unable to open file "/usr/share/sounds/sf2/FluidR3_GM.sf2"
fluidsynth: error: Couldn't load soundfont file
fluidsynth: error: Failed to load SoundFont "/usr/share/sounds/sf2/FluidR3_GM.sf2"
==24020== Conditional jump or move depends on uninitialised value(s)
==24020== at 0x5559CF9: strlen (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==24020== by 0x6301204: fputs (iofputs.c:33)
==24020== by 0x17E01E: M_SaveCVARs (m_config.c:448)
==24020== by 0x178A03: I_Quit (i_system.c:218)
==24020== by 0x184588: M_QuitResponse (m_menu.c:1948)
==24020== by 0x186238: M_Responder (m_menu.c:2749)
==24020== by 0x1690B8: D_PostEvent (d_main.c:152)
==24020== by 0x17936A: I_GetEvent (i_video.c:506)
==24020== by 0x179B9D: I_StartTic (i_video.c:758)
==24020== by 0x168F93: TryRunTics (d_loop.c:61)
==24020== by 0x16964D: D_DoomLoop (d_main.c:382)
==24020== by 0x16C83D: D_DoomMain (d_main.c:2088)
==24020== Uninitialised value was created by a stack allocation
==24020== at 0x1695EA: D_DoomLoop (d_main.c:368)
==24020==
==24020== Conditional jump or move depends on uninitialised value(s)
==24020== at 0x5559D08: strlen (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==24020== by 0x6301204: fputs (iofputs.c:33)
==24020== by 0x17E01E: M_SaveCVARs (m_config.c:448)
==24020== by 0x178A03: I_Quit (i_system.c:218)
==24020== by 0x184588: M_QuitResponse (m_menu.c:1948)
==24020== by 0x186238: M_Responder (m_menu.c:2749)
==24020== by 0x1690B8: D_PostEvent (d_main.c:152)
==24020== by 0x17936A: I_GetEvent (i_video.c:506)
==24020== by 0x179B9D: I_StartTic (i_video.c:758)
==24020== by 0x168F93: TryRunTics (d_loop.c:61)
==24020== by 0x16964D: D_DoomLoop (d_main.c:382)
==24020== by 0x16C83D: D_DoomMain (d_main.c:2088)
==24020== Uninitialised value was created by a stack allocation
==24020== at 0x1695EA: D_DoomLoop (d_main.c:368)
@mfrancis95, can you please run Valgrind again. I believe commit c4e2b975ad0a6cab59eee83d87f6b4979dd6ad46 should fix things.
Fixed. :+1:
lumps_str
gets malloc()
'd but then those bytes are lost by the later call to commify()
.
diff --git a/src/w_wad.c b/src/w_wad.c
index de6cf3f2..4a80665a 100644
--- a/src/w_wad.c
+++ b/src/w_wad.c
@@ -146,14 +146,13 @@ dboolean W_AddFile(char *filename, dboolean automatic)
filelump_t *fileinfo;
filelump_t *filerover;
lumpinfo_t *filelumps;
- char *lumps_str = malloc(16);
+ char *lumps_str;
// open the file and add to directory
wadfile_t *wadfile = W_OpenFile(filename);
if (!wadfile)
{
- free(lumps_str);
return false;
}
And now I'm down to only 6:
==235== 3 bytes in 1 blocks are definitely lost in loss record 1 of 166
==235== at 0x5557B0F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==235== by 0x63209B9: strdup (strdup.c:42)
==235== by 0x1895CC: M_StringDuplicate (m_misc.c:450)
==235== by 0x17FD9A: M_LoadCVARs (m_config.c:988)
==235== by 0x16B0BC: D_DoomMainSetup (d_main.c:1662)
==235== by 0x16C833: D_DoomMain (d_main.c:2086)
==235== by 0x16C863: main (doomretro.c:288)
==235==
==235== 10 bytes in 2 blocks are definitely lost in loss record 6 of 166
==235== at 0x5557B0F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==235== by 0x63209B9: strdup (strdup.c:42)
==235== by 0x1895CC: M_StringDuplicate (m_misc.c:450)
==235== by 0x180116: M_LoadCVARs (m_config.c:1043)
==235== by 0x16B0BC: D_DoomMainSetup (d_main.c:1662)
==235== by 0x16C833: D_DoomMain (d_main.c:2086)
==235== by 0x16C863: main (doomretro.c:288)
==235==
==235== 16 bytes in 1 blocks are definitely lost in loss record 9 of 166
==235== at 0x5557B0F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==235== by 0x1DB52F: W_AddFile (w_wad.c:149)
==235== by 0x16B449: D_DoomMainSetup (d_main.c:1744)
==235== by 0x16C833: D_DoomMain (d_main.c:2086)
==235== by 0x16C863: main (doomretro.c:288)
==235==
==235== 16 bytes in 1 blocks are definitely lost in loss record 10 of 166
==235== at 0x5557B0F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==235== by 0x1DB52F: W_AddFile (w_wad.c:149)
==235== by 0x1DB30F: W_MergeFile (w_merge.c:519)
==235== by 0x1DB897: W_AddFile (w_wad.c:215)
==235== by 0x16B449: D_DoomMainSetup (d_main.c:1744)
==235== by 0x16C833: D_DoomMain (d_main.c:2086)
==235== by 0x16C863: main (doomretro.c:288)
==235==
==235== 52 bytes in 12 blocks are definitely lost in loss record 78 of 166
==235== at 0x5557B0F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==235== by 0x63209B9: strdup (strdup.c:42)
==235== by 0x1895CC: M_StringDuplicate (m_misc.c:450)
==235== by 0x17FF62: M_LoadCVARs (m_config.c:1018)
==235== by 0x16B0BC: D_DoomMainSetup (d_main.c:1662)
==235== by 0x16C833: D_DoomMain (d_main.c:2086)
==235== by 0x16C863: main (doomretro.c:288)
==235==
==235== 53 bytes in 1 blocks are definitely lost in loss record 79 of 166
==235== at 0x5557B0F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==235== by 0x1891A5: M_StringJoin (m_misc.c:347)
==235== by 0x188F9A: M_GetResourceFolder (m_misc.c:215)
==235== by 0x16AF4A: D_DoomMainSetup (d_main.c:1628)
==235== by 0x16C833: D_DoomMain (d_main.c:2086)
==235== by 0x16C863: main (doomretro.c:288)