Clear Sky - Random segmentation fault in GLRender
Describe the bug Random happening segmentation fault in GL render code.
To Reproduce Happens randomly, but regularly. Seen this multiple times, always crashing in the same function, while doing different game activities. Mostly happening in combat or in start/end of combat.
Expected behavior Game should not crash.
BugTrap error report No bugtrap error, here is the GDB log:
Thread 1 "Primary thread" received signal SIGSEGV, Segmentation fault.
0x00007ffff7bfa6df in bool xray::render::render_gl::cmp_pass<xr_fixed_map_node<xray::render::render_gl::SPass*, xray::render::render_gl::R_dsgraph::mapNormalItems>*>(xr_fixed_map_node<xray::render::render_gl::SPass*, xray::render::render_gl::R_dsgraph::mapNormalItems>* const&, xr_fixed_map_node<xray::render::render_gl::SPass*, xray::render::render_gl::R_dsgraph::mapNormalItems>* const&) ()
from /drive/data/Linux/TEMP/builds/xray-16/bin/x86_64/Release/xrRender_GL.so
(gdb) bt
#0 0x00007ffff7bfa6df in bool xray::render::render_gl::cmp_pass<xr_fixed_map_node<xray::render::render_gl::SPass*, xray::render::render_gl::R_dsgraph::mapNormalItems>*>(xr_fixed_map_node<xray::render::render_gl::SPass*, xray::render::render_gl::R_dsgraph::mapNormalItems>* const&, xr_fixed_map_node<xray::render::render_gl::SPass*, xray::render::render_gl::R_dsgraph::mapNormalItems>* const&)
() from /drive/data/Linux/TEMP/builds/xray-16/bin/x86_64/Release/xrRender_GL.so
#1 0x00007ffff7bf93a6 in xray::render::render_gl::R_dsgraph_structure::render_graph(unsigned int) ()
from /drive/data/Linux/TEMP/builds/xray-16/bin/x86_64/Release/xrRender_GL.so
#2 0x00007ffff7c64697 in xray::render::render_gl::CRender::Render() ()
from /drive/data/Linux/TEMP/builds/xray-16/bin/x86_64/Release/xrRender_GL.so
#3 0x00007ffff644dde4 in non-virtual thunk to CLevel::OnRender() ()
from /drive/data/Linux/TEMP/builds/xray-16/bin/x86_64/Release/xrGame.so
#4 0x00007ffff46e289e in CRenderDevice::DoRender() () from /drive/data/Linux/TEMP/builds/xray-16/bin/x86_64/Release/xrEngine.so
#5 0x00007ffff46e3345 in CRenderDevice::ProcessFrame() ()
from /drive/data/Linux/TEMP/builds/xray-16/bin/x86_64/Release/xrEngine.so
#6 0x00007ffff46d6e3d in CApplication::Run() () from /drive/data/Linux/TEMP/builds/xray-16/bin/x86_64/Release/xrEngine.so
#7 0x0000555555556580 in entry_point(char const*) ()
#8 0x00005555555563bf in main ()
(gdb) info threads
Id Target Id Frame
* 1 Thread 0x7ffff37cf980 (LWP 225968) "Primary thread" 0x00007ffff7bfa6df in bool xray::render::render_gl::cmp_pass<xr_fixed_map_node<xray::render::render_gl::SPass*, xray::render::render_gl::R_dsgraph::mapNormalItems>*>(xr_fixed_map_node<xray::render::render_gl::SPass*, xray::render::render_gl::R_dsgraph::mapNormalItems>* const&, xr_fixed_map_node<xray::render::render_gl::SPass*, xray::render::render_gl::R_dsgraph::mapNormalItems>* const&) ()
from /drive/data/Linux/TEMP/builds/xray-16/bin/x86_64/Release/xrRender_GL.so
2 Thread 0x7ffff2bff6c0 (LWP 225989) "libusb_event" 0x00007ffff40abbe2 in ?? () from /usr/lib/libc.so.6
3 Thread 0x7ffff23fe6c0 (LWP 225990) "Task Worker" 0x00007ffff40abbe2 in ?? () from /usr/lib/libc.so.6
4 Thread 0x7ffff1bfd6c0 (LWP 225991) "Task Worker" 0x00007ffff40abbe2 in ?? () from /usr/lib/libc.so.6
5 Thread 0x7ffff13fc6c0 (LWP 225992) "Task Worker" 0x00007ffff40abbe2 in ?? () from /usr/lib/libc.so.6
6 Thread 0x7ffff0b3e6c0 (LWP 225993) "PWEventThread" 0x00007ffff40abbe2 in ?? () from /usr/lib/libc.so.6
25 Thread 0x7fffe3fff6c0 (LWP 226036) "ALSoftP9" 0x00007ffff40abbe2 in ?? () from /usr/lib/libc.so.6
26 Thread 0x7fffe37fe6c0 (LWP 226037) "Primary thread" 0x00007ffff40abbe2 in ?? () from /usr/lib/libc.so.6
Desktop (please complete the following information):
- OS: Manjaro, latest
- OpenXRay build version: latest from dev branch
- Stalker mods: SRP, Two-K texture pack, S.W.R.P, 4k map texture
- Launch command line: "clear && gdb --ex=r --args ./xr_3da -no_staging -smap4096 -cs"
Do you compile with Clang?
I believe this and #1760 should be the same issues.
Compiled using c++ (GCC) 14.2.1 20250207 In the mentioned issue error is SIGILL, and my one is always SIGSEGV. Also, it has slightly different stack trace. But maybe they have same source in the code