Closed Talon1024 closed 3 years ago
While I am completely ignorant with Linux, I am trying to interprete errors:
I was reading this by checking err lines mentioned on the report, on top of the .h file there are notes how kernel interprete these signals (just trying to understand, I may be wrong)
https://code.woboq.org/userspace/glibc/sysdeps/unix/sysv/linux/futex-internal.h.html#205
I rebased this PR, so it represents the current development version of GZDoom. There is a chance that it's the same old problem with bogus pointer serialization.
I suggest you to build own version with these changes, maybe using Debug configuration. The simplest test would be loading of a few existing saved games. It will fail with an error when invalid pointer is encountered. Even if it won't change anything regarding the crash, this will help to eliminate one potential cause.
I think the pointer serialization issues may have been fixed, because I was able to do a full playthrough of Chapter 1 using more recent builds of GZDoom.
I just tried playing C2M1 and loading my previous savegames on that build. I was able to load all of the savegames I had, with no invalid pointer errors.
Today, I just tried to play through C2M1, and it crashed when I tried to quicksave outside of the first mutant laboratory:
*** Fatal Error ***
Segmentation fault (signal 11)
Address: (nil)
System: Linux Gamer2015 4.15.0-112-generic #113-Ubuntu SMP Thu Jul 9 23:41:39 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
GZDoom version g4.5pre-91-g4b859a5e3 (4b859a5e374a186c9815a923689eeb50b03e2246)
Command line: /home/kevinc/Games/doom/gzdoom-pointer_serialization-20200822/gzdoom -iwad doom2.wad -config WolfBoA.ini -file /home/kevinc/misc/WolfenDoom
Wad 0: gzdoom.pk3
Wad 1: game_support.pk3
Wad 2: doom2.wad
Wad 3:
Current map: C2M1
viewx = -776.732051
viewy = 2172.684904
viewz = -199.866078
viewangle = 48.004761
Executing: gdb --quiet --batch --command=gdb-respfile-wT3Zxe
[New LWP 10090]
[New LWP 10093]
[New LWP 10094]
[New LWP 10098]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
0x00007f9073f2824a in __waitpid (pid=10205, stat_loc=0x55cf2095ae6c, options=0) at ../sysdeps/unix/sysv/linux/waitpid.c:30
* Loaded Libraries
From To Syms Read Shared Object Library
0x00007f9075ca2ff0 0x00007f9075d69379 Yes (*) /usr/lib/x86_64-linux-gnu/libSDL2-2.0.so.0
0x00007f9075a7f200 0x00007f9075a8270c Yes /lib/x86_64-linux-gnu/librt.so.1
0x00007f9075861f90 0x00007f9075875640 Yes (*) /lib/x86_64-linux-gnu/libz.so.1
0x00007f90755fbe10 0x00007f9075635780 Yes (*) /usr/lib/x86_64-linux-gnu/libjpeg.so.8
0x00007f90753e9320 0x00007f90753f53c2 Yes (*) /lib/x86_64-linux-gnu/libbz2.so.1.0
0x00007f90751e4e50 0x00007f90751e5bee Yes /lib/x86_64-linux-gnu/libdl.so.2
0x00007f9074d2b290 0x00007f9074ea97a3 Yes /usr/local/lib/libzmusic.so.1
0x00007f90749a6490 0x00007f9074a559de Yes (*) /usr/lib/x86_64-linux-gnu/libstdc++.so.6
0x00007f9074587a80 0x00007f90746461d5 Yes /lib/x86_64-linux-gnu/libm.so.6
0x00007f90743543e0 0x00007f907437291e Yes (*) /usr/lib/x86_64-linux-gnu/libgomp.so.1
0x00007f9074137ac0 0x00007f907414836d Yes (*) /lib/x86_64-linux-gnu/libgcc_s.so.1
0x00007f9073f1bbb0 0x00007f9073f2a101 Yes /lib/x86_64-linux-gnu/libpthread.so.0
0x00007f9073b462d0 0x00007f9073cbeeac Yes /lib/x86_64-linux-gnu/libc.so.6
0x00007f9073848ea0 0x00007f90738df2cf Yes (*) /usr/lib/x86_64-linux-gnu/libasound.so.2
0x00007f90735d9b10 0x00007f9073606672 Yes (*) /usr/lib/x86_64-linux-gnu/libpulse.so.0
0x00007f90733c0bc0 0x00007f90733c7317 Yes (*) /usr/lib/x86_64-linux-gnu/libsndio.so.6.1
0x00007f907309e7c0 0x00007f9073125828 Yes (*) /usr/lib/x86_64-linux-gnu/libX11.so.6
0x00007f9072e77590 0x00007f9072e8139f Yes (*) /usr/lib/x86_64-linux-gnu/libXext.so.6
0x00007f9072c6c320 0x00007f9072c70d40 Yes (*) /usr/lib/x86_64-linux-gnu/libXcursor.so.1
0x00007f9072a67af0 0x00007f9072a683ec Yes (*) /usr/lib/x86_64-linux-gnu/libXinerama.so.1
0x00007f9072859180 0x00007f90728639d7 Yes (*) /usr/lib/x86_64-linux-gnu/libXi.so.6
0x00007f907264dc00 0x00007f9072653cf5 Yes (*) /usr/lib/x86_64-linux-gnu/libXrandr.so.2
0x00007f9072448cd0 0x00007f9072449a8c Yes (*) /usr/lib/x86_64-linux-gnu/libXss.so.1
0x00007f9072242fc0 0x00007f90722458c8 Yes (*) /usr/lib/x86_64-linux-gnu/libXxf86vm.so.1
0x00007f9072040640 0x00007f90720407d6 Yes (*) /usr/lib/x86_64-linux-gnu/libwayland-egl.so.1
0x00007f9071e35ff0 0x00007f9071e3adef Yes (*) /usr/lib/x86_64-linux-gnu/libwayland-client.so.0
0x00007f9071c2a190 0x00007f9071c2bcaf Yes (*) /usr/lib/x86_64-linux-gnu/libwayland-cursor.so.0
0x00007f90719ee010 0x00007f9071a08b3a Yes (*) /usr/lib/x86_64-linux-gnu/libxkbcommon.so.0
0x00007f9075fb7f10 0x00007f9075fd6b50 Yes /lib64/ld-linux-x86-64.so.2
0x00007f907177df00 0x00007f90717c2afe Yes (*) /usr/lib/x86_64-linux-gnu/pulseaudio/libpulsecommon-11.1.so
0x00007f907152a1e0 0x00007f9071555b81 Yes (*) /lib/x86_64-linux-gnu/libdbus-1.so.3
0x00007f907130d450 0x00007f907131a35f Yes (*) /lib/x86_64-linux-gnu/libbsd.so.0
0x00007f90710ed150 0x00007f90710ff565 Yes (*) /usr/lib/x86_64-linux-gnu/libxcb.so.1
0x00007f9070ed9a60 0x00007f9070edfab5 Yes (*) /usr/lib/x86_64-linux-gnu/libXrender.so.1
0x00007f9070cd3540 0x00007f9070cd5876 Yes (*) /usr/lib/x86_64-linux-gnu/libXfixes.so.3
0x00007f9070acb740 0x00007f9070ad000a Yes (*) /usr/lib/x86_64-linux-gnu/libffi.so.6
0x00007f9070853400 0x00007f90708aa0b4 Yes (*) /lib/x86_64-linux-gnu/libsystemd.so.0
0x00007f907063ecd0 0x00007f9070642867 Yes (*) /lib/x86_64-linux-gnu/libwrap.so.0
0x00007f90703c9750 0x00007f907041a435 Yes (*) /usr/lib/x86_64-linux-gnu/libsndfile.so.1
0x00007f90701be1d0 0x00007f90701c0848 Yes (*) /usr/lib/x86_64-linux-gnu/libasyncns.so.0
0x00007f906ffb9da0 0x00007f906ffbaa9e Yes (*) /usr/lib/x86_64-linux-gnu/libXau.so.6
0x00007f906fdb4110 0x00007f906fdb5a18 Yes (*) /usr/lib/x86_64-linux-gnu/libXdmcp.so.6
0x00007f906fb8f8e0 0x00007f906fba63e2 Yes (*) /lib/x86_64-linux-gnu/liblzma.so.5
0x00007f906f972da0 0x00007f906f98a386 Yes (*) /usr/lib/x86_64-linux-gnu/liblz4.so.1
0x00007f906f660c00 0x00007f906f72cdd8 Yes (*) /lib/x86_64-linux-gnu/libgcrypt.so.20
0x00007f906f43f090 0x00007f906f44c8a7 Yes /lib/x86_64-linux-gnu/libnsl.so.1
0x00007f906f1cc170 0x00007f906f22f2db Yes (*) /usr/lib/x86_64-linux-gnu/libFLAC.so.8
0x00007f906efbca70 0x00007f906efc0c05 Yes (*) /usr/lib/x86_64-linux-gnu/libogg.so.0
0x00007f906ed92ce0 0x00007f906eda8a82 Yes (*) /usr/lib/x86_64-linux-gnu/libvorbis.so.0
0x00007f906eafaa00 0x00007f906eafd12c Yes (*) /usr/lib/x86_64-linux-gnu/libvorbisenc.so.2
0x00007f906e8cf830 0x00007f906e8df152 Yes /lib/x86_64-linux-gnu/libresolv.so.2
0x00007f906e6b9be0 0x00007f906e6c3d48 Yes (*) /lib/x86_64-linux-gnu/libgpg-error.so.0
0x00007f906dc9b8c0 0x00007f906dcada83 Yes (*) /lib/x86_64-linux-gnu/libudev.so.1
0x00007f906da04060 0x00007f906da519a8 Yes (*) /usr/lib/x86_64-linux-gnu/libopenal.so.1
0x00007f906d7bd440 0x00007f906d7e12f3 Yes (*) /usr/lib/x86_64-linux-gnu/libjack.so.0
0x00007f90570483d0 0x00007f905704b70f Yes (*) /usr/lib/x86_64-linux-gnu/libGL.so.1
0x00007f906c018fb0 0x00007f906c022b45 Yes (*) /usr/lib/x86_64-linux-gnu/libGLX.so.0
0x00007f9056d90b60 0x00007f9056d939e7 Yes (*) /usr/lib/x86_64-linux-gnu/libGLdispatch.so.0
0x00007f9056a8bef0 0x00007f9056ae8a2f Yes (*) /usr/lib/x86_64-linux-gnu/libGLX_nvidia.so.0
0x00007f905683c9a0 0x00007f905683e6a3 Yes (*) /usr/lib/x86_64-linux-gnu/libnvidia-tls.so.440.100
0x00007f9054d44310 0x00007f9055da54e7 Yes (*) /usr/lib/x86_64-linux-gnu/libnvidia-glcore.so.440.100
0x00007f9054713e20 0x00007f905471cd05 Yes (*) /usr/lib/x86_64-linux-gnu/libdrm.so.2
0x00007f905428ae40 0x00007f9054293285 Yes (*) /usr/lib/x86_64-linux-gnu/libxcb-glx.so.0
0x00007f905407e4e0 0x00007f905407e5db Yes (*) /usr/lib/x86_64-linux-gnu/libX11-xcb.so.1
0x00007f904fdfd4f0 0x00007f904fdfe303 Yes (*) /usr/lib/x86_64-linux-gnu/libxcb-dri3.so.0
0x00007f904fbf9d30 0x00007f904fbfa5b6 Yes (*) /usr/lib/x86_64-linux-gnu/libxcb-present.so.0
0x00007f904f9f40e0 0x00007f904f9f6192 Yes (*) /usr/lib/x86_64-linux-gnu/libxcb-sync.so.1
0x00007f904f7aa3a0 0x00007f904f7de159 Yes (*) /usr/lib/x86_64-linux-gnu/libvulkan.so.1
0x00007f90440dd6d0 0x00007f9046313def Yes (*) /usr/lib/x86_64-linux-gnu/libLLVM-10.so.1
0x00007f904e05c1b0 0x00007f904e076600 Yes (*) /usr/lib/x86_64-linux-gnu/libedit.so.2
0x00007f904de36990 0x00007f904de42a18 Yes (*) /lib/x86_64-linux-gnu/libtinfo.so.5
0x00007f904efff370 0x00007f904f3460fe Yes (*) /usr/lib/x86_64-linux-gnu/libvulkan_radeon.so
0x00007f904ed66830 0x00007f904ed6abdd Yes (*) /usr/lib/x86_64-linux-gnu/libdrm_amdgpu.so.1
0x00007f904eb4ce00 0x00007f904eb5eb21 Yes (*) /usr/lib/x86_64-linux-gnu/libelf.so.1
0x00007f904e9406e0 0x00007f904e9451a1 Yes (*) /usr/lib/x86_64-linux-gnu/libxcb-randr.so.0
0x00007f904e70b840 0x00007f904e728093 Yes (*) /lib/x86_64-linux-gnu/libexpat.so.1
0x00007f904e506960 0x00007f904e506c2c Yes (*) /usr/lib/x86_64-linux-gnu/libxshmfence.so.1
0x00007f904e28e4f0 0x00007f904e2f6176 Yes (*) /usr/lib/x86_64-linux-gnu/libzstd.so.1
0x00007f904d406440 0x00007f904d924c7e Yes (*) /usr/lib/x86_64-linux-gnu/libvulkan_intel.so
0x00007f904c70f010 0x00007f904cf53a62 Yes (*) /usr/lib/x86_64-linux-gnu/libnvidia-glvkspirv.so.440.100
0x00007f904c45c900 0x00007f904c492898 Yes (*) /usr/lib/x86_64-linux-gnu/libnvidia-cbl.so.440.100
0x00007f904c1f7110 0x00007f904c235bc4 Yes (*) /usr/lib/x86_64-linux-gnu/libnvidia-fatbinaryloader.so.440.100
(*): Shared library is missing debugging information.
* Threads
Id Target Id Frame
* 1 Thread 0x7f90761923c0 (LWP 10089) "gzdoom" 0x00007f9073f2824a in __waitpid (pid=10205, stat_loc=0x55cf2095ae6c, options=0) at ../sysdeps/unix/sysv/linux/waitpid.c:30
2 Thread 0x7f906e6b6700 (LWP 10090) "gzdoom" 0x00007f9073f239f3 in futex_wait_cancelable (private=<optimized out>, expected=0, futex_word=0x55cf20a97c80 <renderPool+256>) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
3 Thread 0x7f906d7b1700 (LWP 10093) "threaded-ml" 0x00007f9073c39cf9 in __GI___poll (fds=0x7f9068009d90, nfds=3, timeout=721) at ../sysdeps/unix/sysv/linux/poll.c:29
4 Thread 0x7f906cfb0700 (LWP 10094) "gzdoom" 0x00007f9073f239f3 in futex_wait_cancelable (private=<optimized out>, expected=0, futex_word=0x7f9068008618) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
5 Thread 0x7f9057a94700 (LWP 10098) "gzdoom" 0x00007f9073f23f85 in futex_abstimed_wait_cancelable (private=<optimized out>, abstime=0x7f9057a93d00, expected=0, futex_word=0x55cf22601754) at ../sysdeps/unix/sysv/linux/futex-internal.h:205
* FPU Status
R7: Empty 0x00000000000000000000
R6: Empty 0x00000000000000000000
R5: Empty 0x00000000000000000000
R4: Empty 0x00000000000000000000
R3: Empty 0x00000000000000000000
R2: Empty 0x00000000000000000000
R1: Empty 0x00000000000000000000
=>R0: Empty 0x00000000000000000000
Status Word: 0x0000
TOP: 0
Control Word: 0x037f IM DM ZM OM UM PM
PC: Extended Precision (64-bits)
RC: Round to nearest
Tag Word: 0xffff
Instruction Pointer: 0x00:0x00000000
Operand Pointer: 0x00:0x00000000
Opcode: 0x0000
* Registers
rax 0xfffffffffffffe00 -512
rbx 0x27dd 10205
rcx 0x7f9073f2824a 140258397291082
rdx 0x0 0
rsi 0x55cf2095ae6c 94348093271660
rdi 0x27dd 10205
rbp 0x55cf2095ae6c 0x55cf2095ae6c
rsp 0x55cf2095ae30 0x55cf2095ae30
r8 0x0 0
r9 0x0 0
r10 0x0 0
r11 0x246 582
r12 0x0 0
r13 0x1090 4240
r14 0x55cf20958360 94348093260640
r15 0x3b 59
rip 0x7f9073f2824a 0x7f9073f2824a <__waitpid+74>
eflags 0x246 [ PF ZF IF ]
cs 0x33 51
ss 0x2b 43
ds 0x0 0
es 0x0 0
fs 0x0 0
gs 0x0 0
* Backtrace
Thread 5 (Thread 0x7f9057a94700 (LWP 10098)):
#0 0x00007f9073f23f85 in futex_abstimed_wait_cancelable (private=<optimized out>, abstime=0x7f9057a93d00, expected=0, futex_word=0x55cf22601754) at ../sysdeps/unix/sysv/linux/futex-internal.h:205
__ret = -516
oldtype = 0
err = <optimized out>
oldtype = <optimized out>
err = <optimized out>
__ret = <optimized out>
resultvar = <optimized out>
__arg6 = <optimized out>
__arg5 = <optimized out>
__arg4 = <optimized out>
__arg3 = <optimized out>
__arg2 = <optimized out>
__arg1 = <optimized out>
_a6 = <optimized out>
_a5 = <optimized out>
_a4 = <optimized out>
_a3 = <optimized out>
_a2 = <optimized out>
_a1 = <optimized out>
#1 __pthread_cond_wait_common (abstime=0x7f9057a93d00, mutex=0x55cf22601700, cond=0x55cf22601728) at pthread_cond_wait.c:539
spin = 0
buffer = {__routine = 0x7f9073f23690 <__condvar_cleanup_waiting>, __arg = 0x7f9057a93c50, __canceltype = 576722352, __prev = 0x0}
cbuffer = {wseq = 16001, cond = 0x55cf22601728, mutex = 0x55cf22601700, private = 0}
err = <optimized out>
g = 1
flags = <optimized out>
g1_start = <optimized out>
maxspin = 0
signals = <optimized out>
result = 0
wseq = <optimized out>
seq = 8000
private = <optimized out>
maxspin = <optimized out>
err = <optimized out>
result = <optimized out>
wseq = <optimized out>
g = <optimized out>
seq = <optimized out>
flags = <optimized out>
private = <optimized out>
signals = <optimized out>
g1_start = <optimized out>
spin = <optimized out>
buffer = <optimized out>
cbuffer = <optimized out>
rt = <optimized out>
s = <optimized out>
#2 __pthread_cond_timedwait (cond=0x55cf22601728, mutex=0x55cf22601700, abstime=0x7f9057a93d00) at pthread_cond_wait.c:667
No locals.
#3 0x000055cf2016a7c6 in OpenALSoundRenderer::BackgroundProc() ()
No symbol table info available.
#4 0x00007f90749d76df in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
No symbol table info available.
#5 0x00007f9073f1d6db in start_thread (arg=0x7f9057a94700) at pthread_create.c:463
pd = 0x7f9057a94700
now = <optimized out>
unwind_buf = {cancel_jmp_buf = {{jmp_buf = {140257922729728, 8070267781069111359, 140257922727488, 0, 94348268992656, 140726161904768, -8007410464312557505, -8007472523742314433}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
not_first_call = <optimized out>
#6 0x00007f9073c46a3f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
No locals.
Thread 4 (Thread 0x7f906cfb0700 (LWP 10094)):
#0 0x00007f9073f239f3 in futex_wait_cancelable (private=<optimized out>, expected=0, futex_word=0x7f9068008618) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
__ret = -512
oldtype = 0
err = <optimized out>
oldtype = <optimized out>
err = <optimized out>
__ret = <optimized out>
resultvar = <optimized out>
__arg4 = <optimized out>
__arg3 = <optimized out>
__arg2 = <optimized out>
__arg1 = <optimized out>
_a4 = <optimized out>
_a3 = <optimized out>
_a2 = <optimized out>
_a1 = <optimized out>
#1 __pthread_cond_wait_common (abstime=0x0, mutex=0x7f9068009c50, cond=0x7f90680085f0) at pthread_cond_wait.c:502
spin = 0
buffer = {__routine = 0x7f9073f23690 <__condvar_cleanup_waiting>, __arg = 0x7f906cfafc60, __canceltype = 583532880, __prev = 0x0}
cbuffer = {wseq = 71096, cond = 0x7f90680085f0, mutex = 0x7f9068009c50, private = 0}
rt = <optimized out>
err = <optimized out>
g = 0
flags = <optimized out>
g1_start = <optimized out>
signals = <optimized out>
result = 0
wseq = <optimized out>
seq = 35548
private = <optimized out>
maxspin = <optimized out>
err = <optimized out>
result = <optimized out>
wseq = <optimized out>
g = <optimized out>
seq = <optimized out>
flags = <optimized out>
private = <optimized out>
signals = <optimized out>
g1_start = <optimized out>
spin = <optimized out>
buffer = <optimized out>
cbuffer = <optimized out>
rt = <optimized out>
s = <optimized out>
#2 __pthread_cond_wait (cond=0x7f90680085f0, mutex=0x7f9068009c50) at pthread_cond_wait.c:655
No locals.
#3 0x00007f9073600a68 in pa_threaded_mainloop_wait () from /usr/lib/x86_64-linux-gnu/libpulse.so.0
No symbol table info available.
#4 0x00007f906da4b9a7 in ?? () from /usr/lib/x86_64-linux-gnu/libopenal.so.1
No symbol table info available.
#5 0x00007f906da04677 in ?? () from /usr/lib/x86_64-linux-gnu/libopenal.so.1
No symbol table info available.
#6 0x00007f9073f1d6db in start_thread (arg=0x7f906cfb0700) at pthread_create.c:463
pd = 0x7f906cfb0700
now = <optimized out>
unwind_buf = {cancel_jmp_buf = {{jmp_buf = {140258280408832, 8070267781069111359, 140258280406592, 0, 94348129744064, 140726161905280, -8007540616854011841, -8007472523742314433}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
not_first_call = <optimized out>
#7 0x00007f9073c46a3f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
No locals.
Thread 3 (Thread 0x7f906d7b1700 (LWP 10093)):
#0 0x00007f9073c39cf9 in __GI___poll (fds=0x7f9068009d90, nfds=3, timeout=721) at ../sysdeps/unix/sysv/linux/poll.c:29
resultvar = 18446744073709551100
sc_cancel_oldtype = 0
sc_ret = <optimized out>
#1 0x00007f9073600481 in ?? () from /usr/lib/x86_64-linux-gnu/libpulse.so.0
No symbol table info available.
#2 0x00007f90735f1e40 in pa_mainloop_poll () from /usr/lib/x86_64-linux-gnu/libpulse.so.0
No symbol table info available.
#3 0x00007f90735f24d0 in pa_mainloop_iterate () from /usr/lib/x86_64-linux-gnu/libpulse.so.0
No symbol table info available.
#4 0x00007f90735f2560 in pa_mainloop_run () from /usr/lib/x86_64-linux-gnu/libpulse.so.0
No symbol table info available.
#5 0x00007f90736003c9 in ?? () from /usr/lib/x86_64-linux-gnu/libpulse.so.0
No symbol table info available.
#6 0x00007f90717be318 in ?? () from /usr/lib/x86_64-linux-gnu/pulseaudio/libpulsecommon-11.1.so
No symbol table info available.
#7 0x00007f9073f1d6db in start_thread (arg=0x7f906d7b1700) at pthread_create.c:463
pd = 0x7f906d7b1700
now = <optimized out>
unwind_buf = {cancel_jmp_buf = {{jmp_buf = {140258288801536, 8070267781069111359, 140258288799296, 0, 94348130368736, 140726161905264, -8007537301676130241, -8007472523742314433}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
not_first_call = <optimized out>
#8 0x00007f9073c46a3f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
No locals.
Thread 2 (Thread 0x7f906e6b6700 (LWP 10090)):
#0 0x00007f9073f239f3 in futex_wait_cancelable (private=<optimized out>, expected=0, futex_word=0x55cf20a97c80 <renderPool+256>) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
__ret = -512
oldtype = 0
err = <optimized out>
oldtype = <optimized out>
err = <optimized out>
__ret = <optimized out>
resultvar = <optimized out>
__arg4 = <optimized out>
__arg3 = <optimized out>
__arg2 = <optimized out>
__arg1 = <optimized out>
_a4 = <optimized out>
_a3 = <optimized out>
_a2 = <optimized out>
_a1 = <optimized out>
#1 __pthread_cond_wait_common (abstime=0x0, mutex=0x55cf20a97c30 <renderPool+176>, cond=0x55cf20a97c58 <renderPool+216>) at pthread_cond_wait.c:502
spin = 0
buffer = {__routine = 0x7f9073f23690 <__condvar_cleanup_waiting>, __arg = 0x7f906e6b5c60, __canceltype = 990964400, __prev = 0x0}
cbuffer = {wseq = 170384, cond = 0x55cf20a97c58 <renderPool+216>, mutex = 0x55cf20a97c30 <renderPool+176>, private = 0}
rt = <optimized out>
err = <optimized out>
g = 0
flags = <optimized out>
g1_start = <optimized out>
signals = <optimized out>
result = 0
wseq = <optimized out>
seq = 85192
private = <optimized out>
maxspin = <optimized out>
err = <optimized out>
result = <optimized out>
wseq = <optimized out>
g = <optimized out>
seq = <optimized out>
flags = <optimized out>
private = <optimized out>
signals = <optimized out>
g1_start = <optimized out>
spin = <optimized out>
buffer = <optimized out>
cbuffer = <optimized out>
rt = <optimized out>
s = <optimized out>
#2 __pthread_cond_wait (cond=0x55cf20a97c58 <renderPool+216>, mutex=0x55cf20a97c30 <renderPool+176>) at pthread_cond_wait.c:655
No locals.
#3 0x00007f90749d18bc in std::condition_variable::wait(std::unique_lock<std::mutex>&) () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
No symbol table info available.
#4 0x000055cf1fe65a67 in std::thread::_State_impl<std::thread::_Invoker<std::tuple<ctpl::thread_pool::set_thread(int)::{lambda()#1}> > >::_M_run() ()
No symbol table info available.
#5 0x00007f90749d76df in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
No symbol table info available.
#6 0x00007f9073f1d6db in start_thread (arg=0x7f906e6b6700) at pthread_create.c:463
pd = 0x7f906e6b6700
now = <optimized out>
unwind_buf = {cancel_jmp_buf = {{jmp_buf = {140258304550656, 8070267781069111359, 140258304548416, 0, 94348110644784, 140726161910640, -8007535242776182721, -8007472523742314433}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
not_first_call = <optimized out>
#7 0x00007f9073c46a3f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
No locals.
Thread 1 (Thread 0x7f90761923c0 (LWP 10089)):
#0 0x00007f9073f2824a in __waitpid (pid=10205, stat_loc=0x55cf2095ae6c, options=0) at ../sysdeps/unix/sysv/linux/waitpid.c:30
resultvar = 18446744073709551104
sc_cancel_oldtype = 0
sc_ret = <optimized out>
#1 0x000055cf1fce6dbc in ?? ()
No symbol table info available.
#2 <signal handler called>
No locals.
#3 0x000055cf2031a0d2 in ?? ()
No symbol table info available.
#4 0x000055cf2031a0e0 in ?? ()
No symbol table info available.
#5 0x000055cf2031a0e0 in ?? ()
No symbol table info available.
#6 0x000055cf2031a22b in PClass::WriteAllFields(FSerializer&, void const*) const ()
No symbol table info available.
#7 0x000055cf2030bd60 in ?? ()
No symbol table info available.
#8 0x000055cf2030c890 in FSerializer::GetCompressedOutput() ()
No symbol table info available.
#9 0x000055cf1ffd14b9 in FLevelLocals::SnapshotLevel() ()
No symbol table info available.
#10 0x000055cf1ff23311 in G_DoSaveGame(bool, bool, FString, char const*) ()
No symbol table info available.
#11 0x000055cf1ff24143 in G_DoQuickSave() ()
No symbol table info available.
#12 0x000055cf200ec9b5 in Cmd_quicksave(FCommandLine&, int) ()
No symbol table info available.
#13 0x000055cf202d30fe in FConsoleCommand::Run(FCommandLine&, int) ()
No symbol table info available.
#14 0x000055cf202d3c06 in C_DoCommand(char const*, int) ()
No symbol table info available.
#15 0x000055cf202d3ffe in AddCommandString(char const*, int) ()
No symbol table info available.
#16 0x000055cf202cd8b0 in C_DoKey(event_t*, FKeyBindings*, FKeyBindings*) ()
No symbol table info available.
#17 0x000055cf1ff1fbd6 in G_Responder(event_t*) ()
No symbol table info available.
#18 0x000055cf202f50fd in D_ProcessEvents() ()
No symbol table info available.
#19 0x000055cf1ff0f6fa in NetUpdate() ()
No symbol table info available.
#20 0x000055cf1ff120c7 in TryRunTics() ()
No symbol table info available.
#21 0x000055cf1ff07444 in D_DoomLoop() ()
No symbol table info available.
#22 0x000055cf1ff0a94a in ?? ()
No symbol table info available.
#23 0x000055cf1ff0bd49 in GameMain() ()
No symbol table info available.
#24 0x000055cf1fcc72bf in main ()
No symbol table info available.
Release configuration isn’t suitable to investigate such issues.
I just got this random crash while playing through C2M1 on a debug build:
gzdoomd: ../src/playsim/p_actionfunctions.cpp:4275: int AF_AActor_A_RemoveChildren(VMValue*, int, VMReturn*, int, const uint8_t*): Assertion `reginfo[paramnum] == REGT_POINTER && (AssertObject(param[paramnum].a))' failed.
Unfortunately, I don't know what exactly I can do to be more helpful.
You can run GZDoom under gdb
using this guide.
Here is how I would investigate the given assertion failure.
+vm_jit 0
command line option in order to have all required information.bt
command to get a callstack. f <number>
command to switch to a different frame.VMExec_Checked::Exec()
in the output of bt
command. Switch to a corresponding frame with f
command.p func->PrintableName
command to get name of the script function. p ((VMScriptFunction*)func)->SourceFileName
command prints source filename.p ((VMScriptFunction*)func)->LineInfo->LineNumber
.VMExec_Checked::Exec()
calls.This is how it's possible reconstruct a scripting callstack. As you can see, it's not that simple. Investigating this issue further, and even fixing it, is another story. I would suggest to install some IDE with debugging support, e.g. Qt Creator, to make the process a bit easier.
Playing C2M1 for some time, I managed to reproduce this assertion failure once. The current script line was inside EffectsManager.CullEffects() function.
Apparently, a bogus pointer was stored in effects[i].effect
. Have no idea how it's possible. Maybe we have a garbage collection issue in dynamic arrays implementation.
I just got the same two errors on C2M5_A with commit 26753c8014df539bd1fdf045fabb5f7b853b88b9. This makes me wonder, though... Why am I not getting such errors on C1M2? It has many of the same features as C2M1 and C2M5_A.
@Talon1024 Could you please remember what area were you in before the crash? Maybe we could localize the error, it would be easier in case of C2M5_A as it is 'linear'.
@Talon1024 does this still happen or can we close this issue?
Yes, this is still happening, even on a recent September 15 dev build.
So, as an experiment, I made the EffectsManager code log every actor it's about to cull, and I noticed that the game was always trying to cull a "grassX" when it crashes. I noticed all of the winter grass spawners were dormant, so I just removed all the dormant flags from the grass spawners on C2M1 in UDB, and I was able to play for about 15 minutes without the game crashing.
And now I just finished the entire level without a single crash...
Interesting... RandomSpawners completely ignore the Dormant flag (and it doesn't get transferred to their resulting spawned actors), so I'm not sure what the relation is here. This would explain why the problem doesn't show up in some other maps, though.
EDIT: OK, I was wrong, it does transfer it to the spawned actor (copies SpawnFlags over directly).
This would explain why the problem doesn't show up in some other maps, though.
I also had this problem on C2M5_A and C2M5_B.
I also had this problem on C2M5_A and C2M5_B.
But not on every other map with grass spawners...
Can you test with the changes I've made in 47e7d549a4db9a8deecd7fa5f6c55528af19e1bb to see if there's any difference (with or without the DORMANT flags set)?
Yes, I still get the crash with an unmodified version of C2M1. However, without the DORMANT flags set, the crash does not happen.
BTW, the crash seems to happen in the garage area near (X: -4448, Y: 4256) most of the time.
Still getting the random crashes, although thankfully, they occur less often now.
I tried investigating the savegame crash, and it appears that some objects in w->mDObjects weren't accessible.
I tried investigating the savegame crash, and it appears that some objects in w->mDObjects weren't accessible.
Were these object nullptr
or garbage pointers?
I think they were garbage pointers. Regardless, the message I got when trying to access those pointers was "Cannot access memory at address ..."
Here's the full log on Pastebin.
Well, regardless of the details of each crash, it seems like these crashes are related to the EffectsManager, and how it adds/culls "effect" actors in the level. That makes me wonder if it would be safer to cull the effects by changing their StatNums to non-thinking StatNums, rather than adding/removing them from the level.
You're welcome to try. Problem is that most of the culled actors do think... The majority of them are spawners for rain, snow, etc.
Why does this only happen for you? It feels like there is some underlying problem with pointers in the engine that the Linux builds don't handle the same as Windows.
This issue seems to have been taken care of... At least, for me for now. I'll re-open this issue if it becomes a major problem again.
C2M1 sometimes causes GZDoom to crash on me. Sometimes, the crash happens when I try to quicksave, and sometimes, the crash just happens randomly. The reason for the crash seems to be one of two errors. The error that causes the crash when I try to quicksave is:
And the error that causes the crash randomly without quicksaves or autosaves is: