One is a crash on exit related to ENDOOM (issue #583, maybe also related to issue #302 though that appears to have fixed itself on its own).
The problem is that rendering ENDOOM inside C's standard atexit is problematic, because various Linux libraries e.g. Mesa also use it to shut themselves down on atexit, so when our handlers run, they can't be used anymore.
This only reproduces with some graphics drivers on Linux. For example on my Arch Linux system, it crashes with a Ryzen 5700G APU, but it works fine with an Intel i5-7200U iGPU.
Another fix for a crash that happens if you are in the confirm quit menu, and you try to quit again (i.e. try to close the Eternity window again, or do anything that generates a SDL_QUIT event).
Fix two crash issues on exit:
One is a crash on exit related to ENDOOM (issue #583, maybe also related to issue #302 though that appears to have fixed itself on its own).
The problem is that rendering ENDOOM inside C's standard
atexit
is problematic, because various Linux libraries e.g. Mesa also use it to shut themselves down onatexit
, so when our handlers run, they can't be used anymore.This only reproduces with some graphics drivers on Linux. For example on my Arch Linux system, it crashes with a Ryzen 5700G APU, but it works fine with an Intel i5-7200U iGPU.
To fix it, we borrow an
atexit
clone from Chocolate Doom, so that we can run all our handlers first, before the ones registered with the C's standardatexit
run.Another fix for a crash that happens if you are in the confirm quit menu, and you try to quit again (i.e. try to close the Eternity window again, or do anything that generates a
SDL_QUIT
event).