ZDoom / gzdoom

GZDoom is a feature centric port for all Doom engine games, based on ZDoom, adding an OpenGL renderer and powerful scripting capabilities
http://zdoom.org
GNU General Public License v3.0
2.41k stars 533 forks source link

[BUG] crash during game on save #2487

Open shaohme opened 5 months ago

shaohme commented 5 months ago

GZDoom version

4.11.3

Which game are you running with GZDoom?

Doom 2

What Operating System are you using?

Linux x86_64

Please describe your specific OS version

Gentoo

Relevant hardware info

Zen4 7950X, 64GB, Radeon 6700XT

Have you checked that no other similar issue already exists?

A clear and concise description of what the bug is.

During casual game play with Doom 2 wad and Project Brutality Mod from PB_Staging commit 8814cec4d634e9a0a0833c827c2c95abc4a39cf4, the game SIGABRT on save.

It seems to happen quite randomly, but often enough to annoy me, so I ran gzdoom with debug config under gdb and got the backtrace as seen in the log section.

Steps to reproduce the behaviour.

Explain how to reproduce

  1. Start game and load a save
  2. Play
  3. Save the game "a few times"

Your configuration

https://gist.github.com/shaohme/b308125fa8c0ed5825ae361cbc7dda29

Provide a Log

Picked up a stimpack.
Picked up a stimpack.
+1 Explosive Round
Picked up a stimpack.
Picked up a stimpack.
+1 Explosive Round
Picked up a stimpack.
----------------------------------------
A secret is revealed!
----------------------------------------
----------------------------------------
Press Weapon Special key to swap modes
----------------------------------------
Berserk Pack!
Picked up the Heavy Assault Armor
+6 Explosive Rounds
Soulsphere!
gzdoom: /var/tmp/portage/games-fps/gzdoom-4.11.3-r1/work/gzdoom-g4.11.3/src/common/objects/dobject.h:254: PClass* DObject::GetClass() const: Assertion `Class != nullptr' failed.

Thread 1 "gzdoom" received signal SIGABRT, Aborted.
0x00007ffff6ec8c9c in ?? () from /usr/lib64/libc.so.6
(gdb) bt full
#0  0x00007ffff6ec8c9c in ?? () from /usr/lib64/libc.so.6
No symbol table info available.
#1  0x00007ffff6e79bd2 in raise () from /usr/lib64/libc.so.6
No symbol table info available.
#2  0x00007ffff6e624ef in abort () from /usr/lib64/libc.so.6
No symbol table info available.
#3  0x00007ffff6e62417 in ?? () from /usr/lib64/libc.so.6
No symbol table info available.
#4  0x00007ffff6e72632 in __assert_fail () from /usr/lib64/libc.so.6
No symbol table info available.
#5  0x00005555555f9675 in DObject::GetClass (this=0x55556338b870) at /var/tmp/portage/games-fps/gzdoom-4.11.3-r1/work/gzdoom-g4.11.3/src/common/objects/dobject.h:254
        __PRETTY_FUNCTION__ = "PClass* DObject::GetClass() const"
#6  0x0000555555da16c4 in FSerializer::WriteObjects (this=0x7fffffffb560) at /var/tmp/portage/games-fps/gzdoom-4.11.3-r1/work/gzdoom-g4.11.3/src/common/engine/serializer.cpp:612
        obj = 0x55556338b870
        i = 5533
#7  0x0000555555da1dec in FSerializer::GetCompressedOutput (this=0x7fffffffb560) at /var/tmp/portage/games-fps/gzdoom-4.11.3-r1/work/gzdoom-g4.11.3/src/common/engine/serializer.cpp:752
        buff = {mSize = 1, mCompressedSize = 8, mMethod = 1459173008, mZipFlags = 21845, mCRC32 = 1446232219, mBuffer = 0x7fffffffb560 " \333nVUU", filename = 0x7fffffffb560 " \333nVUU"}
        compressbuf = 0x5555559f8869 <FSerializer::operator()<DSeqNode*>(char const*, DSeqNode*&)+47> "H\203\304(\303H\203\3548H\211|$\030H\211t$\020H\211T$\bH\211\f$dH\213\004%("
        stream = {next_in = 0x5555611641b0 "\360X\304nUU", avail_in = 1440353170, total_in = 140737488336224, next_out = 0x555556f92220 <level> "", avail_out = 180186, total_out = 93825000965454, msg = 0x1 <error: Cannot access memory at address 0x1>, state = 0x5555611641b0, zalloc = 0x5555611641b0, 
          zfree = 0x8e605453527cee00, opaque = 0x5555611641b0, data_type = 1440351753, adler = 93459949893248, reserved = 140737488336224}
        err = 32767
#8  0x00005555559f7061 in FLevelLocals::SnapshotLevel (this=0x555556f92220 <level>) at /var/tmp/portage/games-fps/gzdoom-4.11.3-r1/work/gzdoom-g4.11.3/src/p_saveg.cpp:1093
        arc = {<FSerializer> = {_vptr.FSerializer = 0x5555566edb20 <vtable for FDoomSerializer+16>, w = 0x5555611641b0, r = 0x0, soundNamesAreUnique = true, mErrors = 0, mObjectErrors = 0}, Level = 0x555556f92220 <level>}
#9  0x00005555558dbf8d in G_DoSaveGame (okForQuicksave=true, forceQuicksave=false, filename=..., description=0x55555fa8d9ac "def") at /var/tmp/portage/games-fps/gzdoom-4.11.3-r1/work/gzdoom-g4.11.3/src/g_game.cpp:2335
        savegame_content = {Array = 0x0, Count = 0, Most = 0}
        savegame_filenames = {Array = 0x0, Count = 0, Most = 0}
        buf = "\000\000\000\000UU\000\000i\253\005WUU\000\000\000\202\370VUU\000\000\000\356|RST`\216P\267\377\377\000\000\000\000\206Q\214UUU\000\000 \270\377\377\377\177\000\000\360\232\020hUU\000\000\250\030\371VUU\000\000\251Z\373UUU\000\000\250\030\371VUU\000\000з\377\377\377\177\000\000\360\304\032W"
        savepic = {<FileSys::FileWriter> = {_vptr.FileWriter = 0x55555723102c, File = 0x7ffff6efe359 <clock_gettime+25>, CloseOnDestruct = 208}, mBuffer = {Array = 0x7ffff70d2bb1 <std::chrono::_V2::steady_clock::now()+33> "Hi\004$", Count = 128177, Most = 0}}
        savegameinfo = {_vptr.FSerializer = 0x5555571de800, w = 0x8e605453527cee00, r = 0x7fffffffb680, soundNamesAreUnique = 38, mErrors = 21845, mObjectErrors = -18664}
        savegameglobals = {_vptr.FSerializer = 0x55555705ab39 <doomcom+25>, w = 0x555556f89080 <NetSpecs+480>, r = 0x200000000000000, soundNamesAreUnique = 248, mErrors = 21845, mObjectErrors = 17490}
        ver = -18872
        picdata = 0x555556758cf0 <FString::NullString>
        bufpng = {mSize = 1461452320, mCompressedSize = 21845, mMethod = 30, mZipFlags = 2, mCRC32 = 1459135224, mBuffer = 0x55555705ab39 <doomcom+25> "Fliveupdate", filename = 0x5555571ac4f0 "'"}
        succeeded = false
#10 0x00005555558d79c6 in G_Ticker () at /var/tmp/portage/games-fps/gzdoom-4.11.3-r1/work/gzdoom-g4.11.3/src/g_game.cpp:1158
        i = 8
        oldgamestate = GS_LEVEL
        buf = 21845
        rngsum = 1459124192
#11 0x00005555558c6c57 in TryRunTics () at /var/tmp/portage/games-fps/gzdoom-4.11.3-r1/work/gzdoom-g4.11.3/src/d_net.cpp:1992
        i = 8
        lowtic = 17491
        realtics = 1
        availabletics = 1
        counts = 0
        numplaying = 1
        doWait = false
#12 0x00005555558b3f5a in D_DoomLoop () at /var/tmp/portage/games-fps/gzdoom-4.11.3-r1/work/gzdoom-g4.11.3/src/d_main.cpp:1220
        lasttic = 17490
#13 0x00005555558bbc11 in D_DoomMain_Internal () at /var/tmp/portage/games-fps/gzdoom-4.11.3-r1/work/gzdoom-g4.11.3/src/d_main.cpp:3752
        pwads = std::vector of length 0, capacity 0
        ret = 0
        iwad = {Chars = 0x555556758cfc <FString::NullString+12> "", static NullString = {Len = 0, AllocLen = 2, RefCount = 167155, Nothing = "\000"}}
        allwads = std::vector of length 0, capacity 0
        iwad_info = 0x5555572bbe80
        wad = 0x5555571ac2dc "/home/mkj/gms/doom//opt/gzdoom/lights.pk3"
        iwad_man = 0x0
        batchout = 0x0
        logfile = {Chars = 0x555556758cfc <FString::NullString+12> "", static NullString = {Len = 0, AllocLen = 2, RefCount = 167155, Nothing = "\000"}}
        basewad = {Chars = 0x55555723102c "/usr/share/doom/gzdoom.pk3", static NullString = {Len = 0, AllocLen = 2, RefCount = 167155, Nothing = "\000"}}
        optionalwad = {Chars = 0x5555572312fc "/usr/share/doom/game_support.pk3", static NullString = {Len = 0, AllocLen = 2, RefCount = 167155, Nothing = "\000"}}
#14 0x00005555558bbe4e in GameMain () at /var/tmp/portage/games-fps/gzdoom-4.11.3-r1/work/gzdoom-g4.11.3/src/d_main.cpp:3783
        ret = 0
        cb = {UserInfoChanged = 0x5555558cc8f2 <D_UserInfoChanged(FBaseCVar*)>, SendServerInfoChange = 0x5555558ccca0 <D_SendServerInfoChange(FBaseCVar*, UCVarValue, ECVarType)>, SendServerFlagChange = 0x5555558cce1b <D_SendServerFlagChange(FBaseCVar*, int, bool, bool)>, 
          GetUserCVar = 0x5555558d5c0c <G_GetUserCVar(int, char const*)>, MustLatch = 0x5555558bbdba <_FUN()>}
#15 0x0000555555571e36 in main (argc=5, argv=0x7fffffffcae8) at /var/tmp/portage/games-fps/gzdoom-4.11.3-r1/work/gzdoom-g4.11.3/src/common/platform/posix/sdl/i_main.cpp:199
        program = "/usr/bin/\000zdoom\000L\310rC\000\000\000\000\371\231G\200\000\000\000\000\315^\301;\000\000\000\000\245\307e \000\000\000\000b\037)\216\000\000\000\000b\356\254\016\000\000\000\000\026w\324\r\000\000\000\000yo\302\036\000\000\000\000\030\375إ\000\000\000\000.n;\371\000\000\000\000\t\330/A\000\000\000\000\210դh\000\000\000\000\3520\230\373\000\000\000\000\027\227G\251\000\000\000\000\276\263[;\000\000\000\000w\273\b\003\000\000\000\000\021㉲\000\000\000\000\342\377E\355\000\000\000\000\233\302\235\222\000\000\000\000XW|w\000\000\000\000\024+=\243\000\000\000\000\251\355`y\000\000\000\000+S\022\203\000\000\000\000\027\271|c\000"...
        slash = 0x7fffffffb9b8 "/"
        result = 0
(gdb)

This have also been observed on save:

Thread 1 "gzdoom" received signal SIGSEGV, Segmentation fault.
0x0000555555828b53 in FName::GetChars (this=0x1000000041) at /var/tmp/portage/games-fps/gzdoom-4.11.3-r1/work/gzdoom-g4.11.3/src/common/utility/name.h:68
(gdb) bt full
#0  0x0000555555828b53 in FName::GetChars (this=0x1000000041) at /var/tmp/portage/games-fps/gzdoom-4.11.3-r1/work/gzdoom-g4.11.3/src/common/utility/name.h:68
No locals.
#1  0x0000555555da16d0 in FSerializer::WriteObjects (this=0x7fffffffb560) at /var/tmp/portage/games-fps/gzdoom-4.11.3-r1/work/gzdoom-g4.11.3/src/common/engine/serializer.cpp:612
        obj = 0x5555707af900
        i = 6026
#2  0x0000555555da1dec in FSerializer::GetCompressedOutput (this=0x7fffffffb560) at /var/tmp/portage/games-fps/gzdoom-4.11.3-r1/work/gzdoom-g4.11.3/src/common/engine/serializer.cpp:752
        buff = {mSize = 1, mCompressedSize = 8, mMethod = 1459173008, mZipFlags = 21845, mCRC32 = 1446232219, mBuffer = 0x7fffffffb560 " \333nVUU", filename = 0x7fffffffb560 " \333nVUU"}
        compressbuf = 0x5555559f8869 <FSerializer::operator()<DSeqNode*>(char const*, DSeqNode*&)+47> "H\203\304(\303H\203\3548H\211|$\030H\211t$\020H\211T$\bH\211\f$dH\213\004%("
        stream = {next_in = 0x55557130c710 "\260\320xjUU", avail_in = 1440353170, total_in = 140737488336224, next_out = 0x555556f92220 <level> "", avail_out = 211261, total_out = 93825000965454, msg = 0x1 <error: Cannot access memory at address 0x1>, state = 0x55557130c710, zalloc = 0x55557130c710, 
          zfree = 0x4826d558b3c85a00, opaque = 0x55557130c710, data_type = 1440351753, adler = 93459949812032, reserved = 140737488336224}
        err = 32767
#3  0x00005555559f7061 in FLevelLocals::SnapshotLevel (this=0x555556f92220 <level>) at /var/tmp/portage/games-fps/gzdoom-4.11.3-r1/work/gzdoom-g4.11.3/src/p_saveg.cpp:1093
        arc = {<FSerializer> = {_vptr.FSerializer = 0x5555566edb20 <vtable for FDoomSerializer+16>, w = 0x55557130c710, r = 0x0, soundNamesAreUnique = true, mErrors = 0, mObjectErrors = 0}, Level = 0x555556f92220 <level>}
#4  0x00005555558dbf8d in G_DoSaveGame (okForQuicksave=true, forceQuicksave=false, filename=..., description=0x555569a3296c "def") at /var/tmp/portage/games-fps/gzdoom-4.11.3-r1/work/gzdoom-g4.11.3/src/g_game.cpp:2335
        savegame_content = {Array = 0x0, Count = 0, Most = 0}
        savegame_filenames = {Array = 0x0, Count = 0, Most = 0}
        buf = "\000\000\000\000UU\000\000T\253\005WUU\000\000\000\207\370VUU\000\000\000ZȳX\325&HP\267\377\377\000\000\000\000\206Q\214UUU\000\000 \270\377\377\377\177\000\000PS\020iUU\000\000\250\030\371VUU\000\000\251Z\373UUU\000\000\250\030\371VUU\000\000з\377\377\377\177\000\000п\036W"
        savepic = {<FileSys::FileWriter> = {_vptr.FileWriter = 0x55555723199c, File = 0x7ffff6efe359 <clock_gettime+25>, CloseOnDestruct = false}, mBuffer = {Array = 0x7ffff70d2bb1 <std::chrono::_V2::steady_clock::now()+33> "Hi\004$", Count = 130306, Most = 0}}
        savegameinfo = {_vptr.FSerializer = 0x5555571bdd70, w = 0x4826d558b3c85a00, r = 0x7fffffffb680, soundNamesAreUnique = 38, mErrors = 21845, mObjectErrors = -18664}
        savegameglobals = {_vptr.FSerializer = 0x55555705ab39 <doomcom+25>, w = 0x555556f88fc0 <NetSpecs+288>, r = 0x200000000000000, soundNamesAreUnique = 248, mErrors = 21845, mObjectErrors = 35910}
        ver = 1497965104
        picdata = 0x7ffff7c7ad2f <SDL_PumpEventsInternal+207>
        bufpng = {mSize = 1461356928, mCompressedSize = 21845, mMethod = 18, mZipFlags = 2, mCRC32 = 1459134984, mBuffer = 0x55555705ab39 <doomcom+25> "Fliveupdate", filename = 0x5555571ebfd0 "XsnVUU"}
        succeeded = false
#5  0x00005555558d79c6 in G_Ticker () at /var/tmp/portage/games-fps/gzdoom-4.11.3-r1/work/gzdoom-g4.11.3/src/g_game.cpp:1158
        i = 8
        oldgamestate = GS_LEVEL
        buf = 21845
        rngsum = 1459124192
#6  0x00005555558c6c57 in TryRunTics () at /var/tmp/portage/games-fps/gzdoom-4.11.3-r1/work/gzdoom-g4.11.3/src/d_net.cpp:1992
        i = 8
        lowtic = 35911
        realtics = 1
        availabletics = 1
        counts = 0
        numplaying = 1
        doWait = false
#7  0x00005555558b3f5a in D_DoomLoop () at /var/tmp/portage/games-fps/gzdoom-4.11.3-r1/work/gzdoom-g4.11.3/src/d_main.cpp:1220
        lasttic = 35910
#8  0x00005555558bbc11 in D_DoomMain_Internal () at /var/tmp/portage/games-fps/gzdoom-4.11.3-r1/work/gzdoom-g4.11.3/src/d_main.cpp:3752
        pwads = std::vector of length 0, capacity 0
        ret = 0
        iwad = {Chars = 0x555556758cfc <FString::NullString+12> "", static NullString = {Len = 0, AllocLen = 2, RefCount = 167400, Nothing = "\000"}}
        allwads = std::vector of length 0, capacity 0
        iwad_info = 0x5555572bc5b0
        wad = 0x5555571ac08c "/home/mkj/gms/doom//opt/gzdoom/lights.pk3"
        iwad_man = 0x0
        batchout = 0x0
        logfile = {Chars = 0x555556758cfc <FString::NullString+12> "", static NullString = {Len = 0, AllocLen = 2, RefCount = 167400, Nothing = "\000"}}
        basewad = {Chars = 0x55555723199c "/usr/share/doom/gzdoom.pk3", static NullString = {Len = 0, AllocLen = 2, RefCount = 167400, Nothing = "\000"}}
        optionalwad = {Chars = 0x555557231c6c "/usr/share/doom/game_support.pk3", static NullString = {Len = 0, AllocLen = 2, RefCount = 167400, Nothing = "\000"}}
#9  0x00005555558bbe4e in GameMain () at /var/tmp/portage/games-fps/gzdoom-4.11.3-r1/work/gzdoom-g4.11.3/src/d_main.cpp:3783
        ret = 0
        cb = {UserInfoChanged = 0x5555558cc8f2 <D_UserInfoChanged(FBaseCVar*)>, SendServerInfoChange = 0x5555558ccca0 <D_SendServerInfoChange(FBaseCVar*, UCVarValue, ECVarType)>, SendServerFlagChange = 0x5555558cce1b <D_SendServerFlagChange(FBaseCVar*, int, bool, bool)>, 
          GetUserCVar = 0x5555558d5c0c <G_GetUserCVar(int, char const*)>, MustLatch = 0x5555558bbdba <_FUN()>}
#10 0x0000555555571e36 in main (argc=5, argv=0x7fffffffcae8) at /var/tmp/portage/games-fps/gzdoom-4.11.3-r1/work/gzdoom-g4.11.3/src/common/platform/posix/sdl/i_main.cpp:199
        program = "/usr/bin/\000zdoom\000L\310rC\000\000\000\000\371\231G\200\000\000\000\000\315^\301;\000\000\000\000\245\307e \000\000\000\000b\037)\216\000\000\000\000b\356\254\016\000\000\000\000\026w\324\r\000\000\000\000yo\302\036\000\000\000\000\030\375إ\000\000\000\000.n;\371\000\000\000\000\t\330/A\000\000\000\000\210դh\000\000\000\000\3520\230\373\000\000\000\000\027\227G\251\000\000\000\000\276\263[;\000\000\000\000w\273\b\003\000\000\000\000\021㉲\000\000\000\000\342\377E\355\000\000\000\000\233\302\235\222\000\000\000\000XW|w\000\000\000\000\024+=\243\000\000\000\000\251\355`y\000\000\000\000+S\022\203\000\000\000\000\027\271|c\000"...
        slash = 0x7fffffffb9b8 "/"
        result = 0
RicardoLuis0 commented 5 months ago

duplicate of #2407 ?

madame-rachelle commented 5 months ago

Seems to be. The crash is here - https://github.com/ZDoom/gzdoom/blob/6ce809efe2902e43ceaa7031b875225d3a0367de/src/common/engine/serializer.cpp#L612 - which is where the other crash was in the linked report.

@shaohme Would you mind testing again with a build from master?

shaohme commented 5 months ago

Seems to be. The crash is here -

https://github.com/ZDoom/gzdoom/blob/6ce809efe2902e43ceaa7031b875225d3a0367de/src/common/engine/serializer.cpp#L612

  • which is where the other crash was in the linked report.

@shaohme Would you mind testing again with a build from master?

I'll try out latest master build

shaohme commented 4 months ago

Seems to be. The crash is here -

https://github.com/ZDoom/gzdoom/blob/6ce809efe2902e43ceaa7031b875225d3a0367de/src/common/engine/serializer.cpp#L612

  • which is where the other crash was in the linked report.

@shaohme Would you mind testing again with a build from master?

@madame-rachelle GZDoom g4.12pre-480-g7a43d7f78-m crashed again during saving a game.

You've found the Auto Shotgun! (Slot 3)
You got the UAC Mach-3 Minigun! (Slot 5)
You got the M2 Lightning Mode Upgrade!!
Game saved. (/home/mkj/.config/gzdoom/savegames/doom.id.doom2.commercial/save00.zds)
+10 Low Caliber Rounds
+1 Explosive Round
+4 High Caliber Rounds
+1 Explosive Round
----------------------------------------
A secret is revealed!
----------------------------------------
+60 Low Caliber Rounds
+6 Explosive Rounds
+60 Low Caliber Rounds
[==========================================================================================================================================================..]
Thread 1 "gzdoom" received signal SIGSEGV, Segmentation fault.
0x000055555582d521 in FName::GetChars (this=0x4700000059) at /var/tmp/portage/games-fps/gzdoom-9999/work/gzdoom-9999/src/common/utility/name.h:68
warning: 68 /var/tmp/portage/games-fps/gzdoom-9999/work/gzdoom-9999/src/common/utility/name.h: No such file or directory
(gdb) bt full
#0  0x000055555582d521 in FName::GetChars (this=0x4700000059) at /var/tmp/portage/games-fps/gzdoom-9999/work/gzdoom-9999/src/common/utility/name.h:68
No locals.
#1  0x0000555555dd57ea in FSerializer::WriteObjects (this=0x7fffffffb4f0) at /var/tmp/portage/games-fps/gzdoom-9999/work/gzdoom-9999/src/common/engine/serializer.cpp:627
        obj = 0x555574823a80
        i = 4879
#2  0x0000555555dd5f3c in FSerializer::GetCompressedOutput (this=0x7fffffffb4f0) at /var/tmp/portage/games-fps/gzdoom-9999/work/gzdoom-9999/src/common/engine/serializer.cpp:767
        buff = {mSize = 8, mCompressedSize = 93825021265808, mMethod = 1447035603, mCRC32 = 21845, mBuffer = 0x555555bb60be <StaticClearSerializeTranslationsData()+19> "\220H\203\304\b\303H\203\354H\211|$\fdH\213\004%(", filename = 0x7fffffffb4f0 " \035\204VUU"}
        compressbuf = 0x555555bb980a <TArray<std::pair<FTranslationID, FRemapTable>, std::pair<FTranslationID, FRemapTable> >::Reset()+22> "H\213D$\b\307@\f"
        stream = {next_in = 0x555563ee5b60 "З\305_UU", avail_in = 1440566372, total_in = 140737488336112, next_out = 0x5555570eb5c0 <level> "", avail_out = 278072, total_out = 93825001180062, msg = 0x1 <error: Cannot access memory at address 0x1>, state = 0x555563ee5b60, zalloc = 0x555563ee5b60, 
          zfree = 0xbb321503cd129700, opaque = 0x555563ee5b60, data_type = 1440564955, adler = 93459951244368, reserved = 140737488336112}
        err = 32767
#3  0x0000555555a0461f in FLevelLocals::SnapshotLevel (this=0x5555570eb5c0 <level>) at /var/tmp/portage/games-fps/gzdoom-9999/work/gzdoom-9999/src/p_saveg.cpp:1108
        arc = {<FSerializer> = {_vptr.FSerializer = 0x555556841d20 <vtable for FDoomSerializer+16>, w = 0x555563ee5b60, r = 0x0, soundNamesAreUnique = true, mErrors = 0, mObjectErrors = 0}, Level = 0x5555570eb5c0 <level>}
#4  0x00005555558e26df in G_DoSaveGame (okForQuicksave=true, forceQuicksave=false, filename=..., description=0x55556739fcbc "def") at /var/tmp/portage/games-fps/gzdoom-9999/work/gzdoom-9999/src/g_game.cpp:2351
        savegame_content = {Array = 0x0, Count = 0, Most = 0}
        savegame_filenames = {Array = 0x0, Count = 0, Most = 0}
        buf = "\000\000\000\000UU\000\000iA\033WUU\000\000\000\035\016WUU\000\000\000\227\022\315\003\0252\273\340\266\377\377\000\000\000\000\252\250\214UUU\000\000\260\267\377\377\377\177\000\000\000\241]lUU\000\000H\254\016WUU\000\000K\n\000VUU\000\000H\254\016WUU\000\000`\267\377\377\377\177\000\000\200!;W"
        savepic = {<FileSys::FileWriter> = {_vptr.FileWriter = 0x1, File = 0x100000003, CloseOnDestruct = false}, mBuffer = std::vector of length -79345225826305, capacity 18472 = {<error reading variable: Cannot access memory at address 0x482a00000001>
        savegameinfo = {_vptr.FSerializer = 0x5555573b295c, w = 0x7ffff6efe349 <clock_gettime+25>, r = 0x7ffff7ffd000 <_rtld_local>, soundNamesAreUnique = 177, mErrors = 32767, mObjectErrors = 108016}
        savegameglobals = {_vptr.FSerializer = 0x555557337800, w = 0xbb321503cd129700, r = 0x7fffffffb610, soundNamesAreUnique = 154, mErrors = 21845, mObjectErrors = -18776}
        ver = 1466060448
        picdata = 0x7ffff7c7ad2f <SDL_PumpEventsInternal+207>
        bufpng = {mSize = 93825021985081, mCompressedSize = 93825021125456, mMethod = 0, mCRC32 = 33554432, mBuffer = 0x5555558d711a <ReadTicCmd(unsigned char**, int, int)+303> "\203|$\034\001\017\205\202", filename = 0x4829 <error: Cannot access memory at address 0x4829>}
        succeeded = false
#5  0x00005555558de29a in G_Ticker () at /var/tmp/portage/games-fps/gzdoom-9999/work/gzdoom-9999/src/g_game.cpp:1176
        i = 8
        oldgamestate = GS_LEVEL
        buf = 21845
        rngsum = 1460538304
#6  0x00005555558cc37b in TryRunTics () at /var/tmp/portage/games-fps/gzdoom-9999/work/gzdoom-9999/src/d_net.cpp:2012
        i = 8
        lowtic = 18474
        realtics = 1
        availabletics = 1
        counts = 0
        numplaying = 1
        doWait = false
#7  0x00005555558b942a in D_DoomLoop () at /var/tmp/portage/games-fps/gzdoom-9999/work/gzdoom-9999/src/d_main.cpp:1227
        lasttic = 18473
#8  0x00005555558c11cf in D_DoomMain_Internal () at /var/tmp/portage/games-fps/gzdoom-9999/work/gzdoom-9999/src/d_main.cpp:3771
        pwads = std::vector of length 0, capacity 0
        ret = 0
        iwad = {Chars = 0x5555568b1afc <FString::NullString+12> "", static NullString = {Len = 0, AllocLen = 2, RefCount = 167381, Nothing = "\000"}}
        allwads = std::vector of length 0, capacity 0
        iwad_info = 0x5555579bbd80
        wad = 0x555557308a4c "/home/mkj/gms/doom//opt/gzdoom/lights.pk3"
        iwad_man = 0x0
        batchout = 0x0
        logfile = {Chars = 0x5555568b1afc <FString::NullString+12> "", static NullString = {Len = 0, AllocLen = 2, RefCount = 167381, Nothing = "\000"}}
        basewad = {Chars = 0x5555573b295c "/usr/share/doom/gzdoom.pk3", static NullString = {Len = 0, AllocLen = 2, RefCount = 167381, Nothing = "\000"}}
        optionalwad = {Chars = 0x555557306dec "/usr/share/doom/game_support.pk3", static NullString = {Len = 0, AllocLen = 2, RefCount = 167381, Nothing = "\000"}}
#9  0x00005555558c140c in GameMain () at /var/tmp/portage/games-fps/gzdoom-9999/work/gzdoom-9999/src/d_main.cpp:3802
        ret = 0
        cb = {UserInfoChanged = 0x5555558d2dc0 <D_UserInfoChanged(FBaseCVar*)>, SendServerInfoChange = 0x5555558d315f <D_SendServerInfoChange(FBaseCVar*, UCVarValue, ECVarType)>, SendServerFlagChange = 0x5555558d32da <D_SendServerFlagChange(FBaseCVar*, int, bool, bool)>, 
          GetUserCVar = 0x5555558dc46e <G_GetUserCVar(int, char const*)>, MustLatch = 0x5555558c1378 <_FUN()>}
#10 0x0000555555574148 in main (argc=5, argv=0x7fffffffca78) at /var/tmp/portage/games-fps/gzdoom-9999/work/gzdoom-9999/src/common/platform/posix/sdl/i_main.cpp:199
        program = "/usr/bin/\000zdoom\000L\310rC\000\000\000\000\371\231G\200\000\000\000\000\315^\301;\000\000\000\000\245\307e \000\000\000\000b\037)\216\000\000\000\000b\356\254\016\000\000\000\000\026w\324\r\000\000\000\000yo\302\036\000\000\000\000\030\375إ\000\000\000\000.n;\371\000\000\000\000\t\330/A\000\000\000\000\210դh\000\000\000\000\3520\230\373\000\000\000\000\027\227G\251\000\000\000\000\276\263[;\000\000\000\000w\273\b\003\000\000\000\000\021㉲\000\000\000\000\342\377E\355\000\000\000\000\233\302\235\222\000\000\000\000XW|w\000\000\000\000\024+=\243\000\000\000\000\251\355`y\000\000\000\000+S\022\203\000\000\000\000\027\271|c\000"...
        slash = 0x7fffffffb948 "/"
        result = 0
(gdb)
madame-rachelle commented 4 months ago

Thank you. This will need to be looked into.

AA1999 commented 4 months ago

Same issue rn Sudden segfault on save/load

inkoalawetrust commented 3 months ago

So I'm guessing this still hasn't been fixed?

shaohme commented 3 months ago

So I'm guessing this still hasn't been fixed?

Still happens in 4.12.2