MrAlaux/Nugget-Doom

The latest master fails to launch

Zse00 opened this issue · 17 comments

Zse00 commented

Full logs from cloning to launching

 ~/projects  rm -rf Nugget-Doom                                                                                                                                                                                                      ✔ 
 ~/projects  gitc https://github.com/MrAlaux/Nugget-Doom.git                                                                                                                                                                          ✔ 
Cloning into 'Nugget-Doom'...
remote: Enumerating objects: 8679, done.
remote: Counting objects: 100% (40/40), done.
remote: Compressing objects: 100% (25/25), done.
remote: Total 8679 (delta 20), reused 30 (delta 15), pack-reused 8639
Receiving objects: 100% (8679/8679), 13.27 MiB | 3.96 MiB/s, done.
Resolving deltas: 100% (6652/6652), done.
  ~/projects  cp ./Generic-CMake-build-and-install-script/zse00s-generic-auto-cmake-script.sh ./Nugget-Doom                                                                                                                     ✔  5s 
'./Generic-CMake-build-and-install-script/zse00s-generic-auto-cmake-script.sh' -> './Nugget-Doom/zse00s-generic-auto-cmake-script.sh'
  ~/projects  cd Nugget-Doom                                                                                                                                                                                                           ✔ 
  ~/projects/Nugget-Doom  master ?1  ./zse00s-generic-auto-cmake-script.sh                                                                                                                                                        ✔ 
-- The C compiler identification is GNU 12.2.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Setting build type to 'RelWithDebInfo' as none was specified.
-- Looking for pow in m
-- Looking for pow in m - found
-- Looking for dirent.h
-- Looking for dirent.h - found
-- Looking for strsignal
-- Looking for strsignal - found
-- Looking for strcasecmp
-- Looking for strcasecmp - found
-- Looking for strncasecmp
-- Looking for strncasecmp - found
-- Found SDL2: /usr/include/SDL2 (found suitable version "2.24.0", minimum required is "2.0.7") 
-- Found SDL2_mixer: /usr/include/SDL2 (found suitable version "2.6.2", minimum required is "2.0.2") 
-- Found SDL2_net: /usr/include/SDL2 (found version "2.2.0") 
-- Found FluidSynth: /lib/libfluidsynth.so (found version "2.3.0") 
-- Found Python3: /usr/bin/python3.10 (found version "3.10.7") found components: Interpreter 
-- Performing Test CFLAG_Wdeclaration-after-statement
-- Performing Test CFLAG_Wdeclaration-after-statement - Success
-- Performing Test CFLAG_Werror_implicit-function-declaration
-- Performing Test CFLAG_Werror_implicit-function-declaration - Success
-- Performing Test CFLAG_Werror_incompatible-pointer-types
-- Performing Test CFLAG_Werror_incompatible-pointer-types - Success
-- Performing Test CFLAG_Werror_int-conversion
-- Performing Test CFLAG_Werror_int-conversion - Success
-- Performing Test CFLAG_Wformat_2
-- Performing Test CFLAG_Wformat_2 - Success
-- Performing Test CFLAG_Wnull-dereference
-- Performing Test CFLAG_Wnull-dereference - Success
-- Performing Test CFLAG_Wredundant-decls
-- Performing Test CFLAG_Wredundant-decls - Success
-- Performing Test CFLAG_Wrestrict
-- Performing Test CFLAG_Wrestrict - Success
-- Performing Test CFLAG_Wall
-- Performing Test CFLAG_Wall - Success
-- Configuring done
-- Generating done
-- Build files have been written to: /home/unyx/projects/Nugget-Doom/build
[  1%] Building C object textscreen/CMakeFiles/textscreen.dir/txt_checkbox.c.o
[  2%] Building C object opl/CMakeFiles/opl.dir/opl.c.o
[  3%] Building C object textscreen/CMakeFiles/textscreen.dir/txt_button.c.o
[  3%] Building C object opl/CMakeFiles/opl.dir/opl_queue.c.o
[  4%] Building C object textscreen/CMakeFiles/textscreen.dir/txt_desktop.c.o
[  4%] Building C object opl/CMakeFiles/opl.dir/opl_sdl.c.o
[  5%] Building C object opl/CMakeFiles/opl.dir/opl3.c.o
[  5%] Building C object textscreen/CMakeFiles/textscreen.dir/txt_dropdown.c.o
[  6%] Building C object textscreen/CMakeFiles/textscreen.dir/txt_gui.c.o
[  7%] Building C object textscreen/CMakeFiles/textscreen.dir/txt_io.c.o
[  7%] Building C object textscreen/CMakeFiles/textscreen.dir/txt_inputbox.c.o
[  8%] Building C object textscreen/CMakeFiles/textscreen.dir/txt_fileselect.c.o
[  9%] Building C object textscreen/CMakeFiles/textscreen.dir/txt_label.c.o
[ 10%] Linking C static library libopl.a
[ 10%] Building C object textscreen/CMakeFiles/textscreen.dir/txt_separator.c.o
[ 10%] Built target opl
[ 11%] Building C object textscreen/CMakeFiles/textscreen.dir/txt_scrollpane.c.o
[ 12%] Building C object textscreen/CMakeFiles/textscreen.dir/txt_strut.c.o
[ 12%] Building C object textscreen/CMakeFiles/textscreen.dir/txt_table.c.o
[ 13%] Building C object textscreen/CMakeFiles/textscreen.dir/txt_widget.c.o
[ 14%] Building C object textscreen/CMakeFiles/textscreen.dir/txt_window_action.c.o
[ 14%] Building C object textscreen/CMakeFiles/textscreen.dir/txt_window.c.o
[ 15%] Building C object textscreen/CMakeFiles/textscreen.dir/txt_sdl.c.o
[ 16%] Building C object textscreen/CMakeFiles/textscreen.dir/txt_utf8.c.o
[ 17%] Linking C static library libtextscreen.a
[ 17%] Built target textscreen
[ 18%] Building C object setup/CMakeFiles/setup.dir/multiplayer.c.o
[ 18%] Building C object setup/CMakeFiles/setup.dir/mainmenu.c.o
[ 19%] Building C object setup/CMakeFiles/setup.dir/execute.c.o
[ 21%] Building C object src/CMakeFiles/nugget-doom.dir/d_deh.c.o
[ 21%] Building C object src/CMakeFiles/nugget-doom.dir/am_map.c.o
[ 22%] Building C object src/CMakeFiles/nugget-doom.dir/d_iwad.c.o
[ 22%] Building C object src/CMakeFiles/nugget-doom.dir/d_items.c.o
[ 23%] Building C object src/CMakeFiles/nugget-doom.dir/d_main.c.o
[ 23%] Building C object src/CMakeFiles/nugget-doom.dir/d_loop.c.o
[ 25%] Building C object src/CMakeFiles/nugget-doom.dir/d_net.c.o
[ 26%] Building C object src/CMakeFiles/nugget-doom.dir/d_quit.c.o
[ 26%] Building C object src/CMakeFiles/nugget-doom.dir/doomdef.c.o
[ 27%] Building C object src/CMakeFiles/nugget-doom.dir/doomstat.c.o
[ 28%] Building C object src/CMakeFiles/nugget-doom.dir/dsdhacked.c.o
[ 28%] Building C object src/CMakeFiles/nugget-doom.dir/dstrings.c.o
[ 29%] Building C object src/CMakeFiles/nugget-doom.dir/f_finale.c.o
[ 30%] Building C object src/CMakeFiles/nugget-doom.dir/f_wipe.c.o
[ 30%] Building C object src/CMakeFiles/nugget-doom.dir/g_game.c.o
[ 30%] Linking C static library libsetup.a
[ 31%] Building C object src/CMakeFiles/nugget-doom.dir/hu_lib.c.o
[ 31%] Built target setup
[ 32%] Building C object src/CMakeFiles/nugget-doom.dir/hu_stuff.c.o
[ 32%] Building C object src/CMakeFiles/nugget-doom-setup.dir/i_main.c.o
[ 32%] Building C object src/CMakeFiles/nugget-doom.dir/i_endoom.c.o
[ 33%] Building C object src/CMakeFiles/nugget-doom-setup.dir/i_timer.c.o
[ 34%] Building C object src/CMakeFiles/nugget-doom-setup.dir/i_system.c.o
[ 35%] Building C object src/CMakeFiles/nugget-doom.dir/i_flmusic.c.o
[ 35%] Building C object src/CMakeFiles/nugget-doom-setup.dir/m_argv.c.o
[ 36%] Building C object src/CMakeFiles/nugget-doom.dir/i_glob.c.o
[ 36%] Building C object src/CMakeFiles/nugget-doom.dir/i_main.c.o
[ 37%] Building C object src/CMakeFiles/nugget-doom-setup.dir/m_misc2.c.o
[ 38%] Building C object src/CMakeFiles/nugget-doom-setup.dir/m_io.c.o
[ 39%] Building C object src/CMakeFiles/nugget-doom.dir/i_oplmusic.c.o
[ 40%] Building C object src/CMakeFiles/nugget-doom.dir/i_sdlmusic.c.o
[ 40%] Building C object src/CMakeFiles/nugget-doom.dir/i_sound.c.o
[ 41%] Building C object src/CMakeFiles/nugget-doom.dir/i_system.c.o
[ 42%] Building C object src/CMakeFiles/nugget-doom-setup.dir/d_iwad.c.o
[ 42%] Building C object src/CMakeFiles/nugget-doom-setup.dir/net_io.c.o
[ 43%] Building C object src/CMakeFiles/nugget-doom.dir/i_timer.c.o
[ 44%] Building C object src/CMakeFiles/nugget-doom-setup.dir/net_packet.c.o
[ 44%] Building C object src/CMakeFiles/nugget-doom.dir/i_video.c.o
[ 45%] Building C object src/CMakeFiles/nugget-doom-setup.dir/net_sdl.c.o
[ 45%] Building C object src/CMakeFiles/nugget-doom-setup.dir/net_query.c.o
[ 46%] Building C object src/CMakeFiles/nugget-doom.dir/info.c.o
[ 47%] Building C object src/CMakeFiles/nugget-doom.dir/m_argv.c.o
[ 48%] Building C object src/CMakeFiles/nugget-doom-setup.dir/net_structrw.c.o
[ 48%] Building C object src/CMakeFiles/nugget-doom.dir/m_bbox.c.o
[ 50%] Building C object src/CMakeFiles/nugget-doom.dir/m_cheat.c.o
[ 51%] Building C object src/CMakeFiles/nugget-doom.dir/m_input.c.o
[ 52%] Building C object src/CMakeFiles/nugget-doom.dir/m_io.c.o
[ 53%] Building C object src/CMakeFiles/nugget-doom-setup.dir/z_zone.c.o
[ 53%] Building C object src/CMakeFiles/nugget-doom.dir/m_menu.c.o
[ 54%] Building C object src/CMakeFiles/nugget-doom.dir/m_misc.c.o
[ 55%] Building C object src/CMakeFiles/nugget-doom.dir/m_misc2.c.o
[ 55%] Linking C executable nugget-doom-setup
[ 55%] Building C object src/CMakeFiles/nugget-doom.dir/m_nughud.c.o
[ 55%] Built target nugget-doom-setup
[ 56%] Building C object src/CMakeFiles/nugget-doom.dir/m_random.c.o
[ 57%] Building C object src/CMakeFiles/nugget-doom.dir/memio.c.o
[ 57%] Building C object src/CMakeFiles/nugget-doom.dir/midifile.c.o
[ 58%] Building C object src/CMakeFiles/nugget-doom.dir/mus2mid.c.o
[ 59%] Building C object src/CMakeFiles/nugget-doom.dir/net_client.c.o
[ 59%] Building C object src/CMakeFiles/nugget-doom.dir/net_common.c.o
[ 60%] Building C object src/CMakeFiles/nugget-doom.dir/net_dedicated.c.o
[ 61%] Building C object src/CMakeFiles/nugget-doom.dir/net_gui.c.o
[ 61%] Building C object src/CMakeFiles/nugget-doom.dir/net_io.c.o
[ 62%] Building C object src/CMakeFiles/nugget-doom.dir/net_loop.c.o
[ 63%] Building C object src/CMakeFiles/nugget-doom.dir/net_packet.c.o
[ 63%] Building C object src/CMakeFiles/nugget-doom.dir/net_petname.c.o
[ 64%] Building C object src/CMakeFiles/nugget-doom.dir/net_query.c.o
[ 65%] Building C object src/CMakeFiles/nugget-doom.dir/net_sdl.c.o
[ 65%] Building C object src/CMakeFiles/nugget-doom.dir/net_server.c.o
[ 66%] Building C object src/CMakeFiles/nugget-doom.dir/net_structrw.c.o
[ 67%] Building C object src/CMakeFiles/nugget-doom.dir/p_ceilng.c.o
[ 67%] Building C object src/CMakeFiles/nugget-doom.dir/p_doors.c.o
[ 68%] Building C object src/CMakeFiles/nugget-doom.dir/p_enemy.c.o
[ 69%] Building C object src/CMakeFiles/nugget-doom.dir/p_extnodes.c.o
[ 69%] Building C object src/CMakeFiles/nugget-doom.dir/p_floor.c.o
[ 70%] Building C object src/CMakeFiles/nugget-doom.dir/p_genlin.c.o
[ 71%] Building C object src/CMakeFiles/nugget-doom.dir/p_inter.c.o
[ 71%] Building C object src/CMakeFiles/nugget-doom.dir/p_lights.c.o
[ 72%] Building C object src/CMakeFiles/nugget-doom.dir/p_map.c.o
[ 73%] Building C object src/CMakeFiles/nugget-doom.dir/p_maputl.c.o
[ 73%] Building C object src/CMakeFiles/nugget-doom.dir/p_mobj.c.o
[ 75%] Building C object src/CMakeFiles/nugget-doom.dir/p_plats.c.o
[ 76%] Building C object src/CMakeFiles/nugget-doom.dir/p_pspr.c.o
[ 76%] Building C object src/CMakeFiles/nugget-doom.dir/p_saveg.c.o
[ 77%] Building C object src/CMakeFiles/nugget-doom.dir/p_setup.c.o
[ 78%] Building C object src/CMakeFiles/nugget-doom.dir/p_sight.c.o
[ 79%] Building C object src/CMakeFiles/nugget-doom.dir/p_spec.c.o
[ 79%] Building C object src/CMakeFiles/nugget-doom.dir/p_switch.c.o
[ 80%] Building C object src/CMakeFiles/nugget-doom.dir/p_telept.c.o
[ 81%] Building C object src/CMakeFiles/nugget-doom.dir/p_tick.c.o
[ 81%] Building C object src/CMakeFiles/nugget-doom.dir/p_user.c.o
[ 82%] Building C object src/CMakeFiles/nugget-doom.dir/r_bmaps.c.o
[ 83%] Building C object src/CMakeFiles/nugget-doom.dir/r_bsp.c.o
[ 83%] Building C object src/CMakeFiles/nugget-doom.dir/r_data.c.o
[ 84%] Building C object src/CMakeFiles/nugget-doom.dir/r_draw.c.o
[ 85%] Building C object src/CMakeFiles/nugget-doom.dir/r_main.c.o
[ 85%] Building C object src/CMakeFiles/nugget-doom.dir/r_plane.c.o
[ 86%] Building C object src/CMakeFiles/nugget-doom.dir/r_segs.c.o
[ 87%] Building C object src/CMakeFiles/nugget-doom.dir/r_sky.c.o
[ 87%] Building C object src/CMakeFiles/nugget-doom.dir/r_swirl.c.o
[ 88%] Building C object src/CMakeFiles/nugget-doom.dir/r_things.c.o
[ 89%] Building C object src/CMakeFiles/nugget-doom.dir/s_sound.c.o
[ 89%] Building C object src/CMakeFiles/nugget-doom.dir/s_musinfo.c.o
[ 90%] Building C object src/CMakeFiles/nugget-doom.dir/sounds.c.o
[ 91%] Building C object src/CMakeFiles/nugget-doom.dir/statdump.c.o
[ 91%] Building C object src/CMakeFiles/nugget-doom.dir/st_lib.c.o
[ 92%] Building C object src/CMakeFiles/nugget-doom.dir/st_stuff.c.o
[ 93%] Building C object src/CMakeFiles/nugget-doom.dir/tables.c.o
[ 93%] Building C object src/CMakeFiles/nugget-doom.dir/u_mapinfo.c.o
[ 94%] Building C object src/CMakeFiles/nugget-doom.dir/u_scanner.c.o
[ 95%] Building C object src/CMakeFiles/nugget-doom.dir/version.c.o
[ 95%] Building C object src/CMakeFiles/nugget-doom.dir/v_video.c.o
[ 96%] Building C object src/CMakeFiles/nugget-doom.dir/w_wad.c.o
[ 97%] Building C object src/CMakeFiles/nugget-doom.dir/wi_stuff.c.o
[ 97%] Building C object src/CMakeFiles/nugget-doom.dir/z_zone.c.o
[ 98%] Building C object src/CMakeFiles/nugget-doom.dir/__/miniz/miniz.c.o
/home/unyx/projects/Nugget-Doom/miniz/miniz.c:3089:9: note: ‘#pragma message: Using fopen, ftello, fseeko, stat() etc. path for file I/O - this path may not support large files.’
 3089 | #pragma message("Using fopen, ftello, fseeko, stat() etc. path for file I/O - this path may not support large files.")
      |         ^~~~~~~
[100%] Linking C executable nugget-doom
[100%] Built target nugget-doom


Proceed with installation? [y/N] n
  ~/projects/Nugget-Doom    master ?1  ./build/src/nugget-doom                                                                                                                                                              ✔  23s 
IWAD found: /home/unyx/.local/share/games/doom/DOOM2.WAD
DOOM II version
                         DOOM 2: Hell on Earth v2.03                           
Built on Oct 23 2022
M_LoadDefaults: Load system defaults.
 default file: /home/unyx/.local/share/nugget-doom/nugget-doom.cfg
I_SignalHandler: Exit on Segmentation fault (Signal 11)
  ~/projects/Nugget-Doom  master ?1  

image

Does it not launch at all, regardless of loading a map or not?

If that's the case, make sure to try a clean installation without a .cfg and autoload files (other than the ones included by default).

Also, may I see the contents of the "generic auto CMake script" you're using?

I does not launch at all, soon as i try to run the executable it throws this error.
Regarding my install script, it's the same install script I made a pull request for and have made a repo for. The script is fine. it does what it's supposed to.
Manually building with the instructions given in the Nugget doom readme produces the same error

The readme instructions:

`cd nugget
mkdir build; cd build
cmake ..
make

even after a full clean install it still fails (the cfg file was removed)

I also just tried it with regular make install to install it.

doas make clean install -j8

does not matter much since it won't run even from the build directory

I already have an idea of what to check. However, you could try going back commit by commit to find out when it started crashing to provide further feedback. I don't think I can do it myself because, well, I've experienced no crashes, and you seem to be building and running in Linux instead of Windows.

EDIT: The culprit must be 385d77a. Try reverting it.

I could not revert that change because of conflicts but doing a checkout to before that commit did fix it

To be honest, I have no idea why this might be happening. Doesn't help that the code used to load NUGHUD defaults and to parse it from WADs is pretty much the same as used for the app's .cfg and the OPTIONS lump, albeit stripped to remove seemingly unnecessary functionality.

I guess I'll have to do random attempts at getting this fixed, for which I'll use https://github.com/MrAlaux/Nugget-Doom/tree/linuxfix. There's already a first attempt there, so try building it and let me know how it goes.

@MrAlaux now the game launches

It does? Did you come across any errors?

It does? Did you come across any errors?

dwqd
does this count as such?

I did not really had much time to test it yet, tho so far I can confirm that nughud wads break in awful ways and the arms display is all fucked up with a modded nughud

That should definitely not happen, with or without a NUGHUD loaded. You don't even seem to be on the screen sizes on which it is enabled, so it's really weird.
When you do come back to test again, make sure you're using the latest master of linuxfix with no modifications at all, and try to share screenshots of what exactly breaks under what conditions.

@Zse00 any updates?

You are calling strdup(NULL):

--- a/src/m_nughud.c
+++ b/src/m_nughud.c
@@ -289,7 +289,7 @@ void M_NughudLoadDefaults (void)
   register default_t *dp;
 
   for (dp = nughud_defaults; dp->name; dp++)
-    if (dp->type == string)
+    if (dp->type == string && dp->defaultvalue.s)
       { dp->location->s = strdup(dp->defaultvalue.s); }
     else if (dp->type == number)
       { dp->location->i = dp->defaultvalue.i; }

Oh, hey. Didn't expect to see you around here.

Now that you mentioned it, I just noticed that defaults[] has no strings with a default value of NULL, whereas my own nughud_defaults[] does, as you must have noticed. No wonder this hasn't been an issue up until now.

If I may ask, though, why does it seemingly segfault just on Linux?

Regardless, thank you very much for pointing it out. I would've never figured it out myself.

I'm not sure, maybe strdup(NULL) is something like "undefined behavior"? And maybe the Windows implementation has a check for it and returns NULL itself then? On the other hand, it doesn't strictly make sense to measure the length of a string at NULL address, so a segmentation fault is the only reasonable outcome.

Alright, added that check in 67c5e46. Hope it finally fixes this crash; I can't be sure until I hear it from the users that were experiencing it (you didn't explicitly mention testing it yourself). Thanks again!