[Fixed] 5de8487: Should not freeze in case of a SIGSEGV

Started by tomreyn, 19 February 2012, 09:10:55

tomreyn

For some reason, if a segmentation faul occurs, the game just freezes on Linux. This is problematic if you were in full screen mode, since there is then no way to recover other than to SSH into the affected PC and kill the process (well, magic sysrq's may work, I haven't tried, but that's not ideal either). In my opinoion the process should just exit if it runs into a SIGSEGV. I suspect a bug in the signal/exception handling code.
atibox: Ryzen 1800X (8 cores @3.6GHz), 32 GB RAM, MSI Radeon RX 580 Gaming X 8G, PCI subsystem ID [1462:3417], (Radeon RX 580 chipset, POLARIS10) @3440x1440; latest stable Ubuntu release, (open source) radeon (amdgpu) / mesa video driver
atibox (old): Core2Quad Q9400 (4 cores @2.66GHz), 8 GB RAM, XFX HD-467X-DDF2, PCI subsystem ID [1682:2931], (Radeon HD 4670, RV730 XT) @1680x1050; latest stable Ubuntu release, (open source) radeon / mesa video driver
notebook: HP envy13d020ng
internet access: VDSL2+

· · · How YOU can contribute to MG · Latest development snapshot · How to build yourself · Megapack techtree · Currently hosted MG games · · ·

Yggdrasil

Looks like it's not really freezing but waiting for you to press the ok-button on the error dialog. However the dialog isn't shown for some reason. A possible workaround is to press Alt+F4 which breaks out of the event loop and continues on. I'll see what i can do.

tomreyn

For me, Alt-F4 works but only if you were in windowed mode already. Enter never works.
However, now that I've fixed my function keys, I can switch to another terminal by pressing Ctrl-Alt-Fn ( with n in 1..8 ) fine. Where I can then login and run killall -9 glestadv (other signals have no effect).
atibox: Ryzen 1800X (8 cores @3.6GHz), 32 GB RAM, MSI Radeon RX 580 Gaming X 8G, PCI subsystem ID [1462:3417], (Radeon RX 580 chipset, POLARIS10) @3440x1440; latest stable Ubuntu release, (open source) radeon (amdgpu) / mesa video driver
atibox (old): Core2Quad Q9400 (4 cores @2.66GHz), 8 GB RAM, XFX HD-467X-DDF2, PCI subsystem ID [1682:2931], (Radeon HD 4670, RV730 XT) @1680x1050; latest stable Ubuntu release, (open source) radeon / mesa video driver
notebook: HP envy13d020ng
internet access: VDSL2+

· · · How YOU can contribute to MG · Latest development snapshot · How to build yourself · Megapack techtree · Currently hosted MG games · · ·

silnarm

<techy>
Yup, I added support for framebuffer objects a while back, it requires a 'reset' per frame before any drawing, which I seem to have foolishly decided should be done by each ProgramState implementation, rather than just in Program::render(), CrashProgramState wasn't calling it, so it was rendering to the default frame buffer, not our own, then that was all being overwritten in Renderer::swapBuffers() which copied our custom frame buffer (which still had what was last rendered before the crash) to the default :look:
</techy>
Fixed.
Glest Advanced Engine - Code Monkey

Timeline | Downloads