Hello,
I can reproduce a related rss-glx termination problem with rss-glx
0.9.1-7 and XScreenSaver on Debian 13 (Trixie).
A note on the origin of this report: the investigation, diagnosis, and
proposed patch were worked out interactively with ChatGPT. I performed
the commands and tests on my actual Debian 13 system and verified the
results described below, but I do not want to present the technical
analysis as entirely my own work.
In XScreenSaver, when changing the settings of the "lattice" screensaver
and pressing OK, the settings are written successfully to
~/.xscreensaver, but the settings dialog hangs while waiting for the
lattice preview process to terminate.
While it is hanging:
```
pkill -TERM -x lattice
```
has no effect, whereas:
```
pkill -KILL -x lattice
```
immediately terminates lattice and releases the XScreenSaver dialog.
During the investigation, ChatGPT pointed out that src/driver.c installs
the common signal handler for SIGTERM:
```
sa.sa_handler = signalHandler;
sigaction (SIGINT, &sa, 0);
sigaction (SIGPIPE, &sa, 0);
sigaction (SIGQUIT, &sa, 0);
sigaction (SIGTERM, &sa, 0);
```
The signal handler only sets "signalled = 1". The hypothesis was that,
if the program is blocked inside the rendering/GL code, it may not
return to the point where that flag is acted upon.
To test this, I removed only this line:
```
sigaction (SIGTERM, &sa, 0);
```
and rebuilt rss-glx 0.9.1-7 locally on Debian 13.
I installed the resulting locally versioned package:
```
rss-glx 0.9.1-7+termfix1
```
With this change, XScreenSaver can terminate lattice normally and its
settings dialog no longer hangs.
I also tested the settings dialogs of the other installed rss-glx
screensavers. They continue to work normally and I observed no freezes
or other regressions.
So, based on this test, leaving SIGTERM at its default disposition
appears to fix at least this class of rss-glx termination hangs.
Again, the technical diagnosis and suggested source-code change came out
of an interactive troubleshooting session with ChatGPT; my contribution
here was reproducing the problem, running the tests, rebuilding the
package, and confirming that the modification fixes the issue on my system.
Regards
Frank