The problem#
I was modifying a screensaver written using SDL and noticed that sometimes there were many instances of it left running, even after unlocking the screen. Another bug was causing the screensaver to use 100% CPU, resulting in it using up all of my processing power just for a simple screensaver.
The solution#
Make the program exit immediately when it receives a SIGTERM signal by including the function
void exitImmediately(int sig) {
abort();
}
and making the SIGTERM signal handler call it:
signal(SIGTERM, exitImmediately);