I had the opportunity to test this again, this time on slightly different
hardware. Here the problem cannot be reproduced in 100% of cases, sometimes
the screensaver exits as intended.
Same scenario as before. Terminal output when the screensaver is started:
----->8
sundancer2: unrecognized option '--window-id'
----->8
When I try to switch to a different one but it hangs, no additional output
is generated. In some cases switching away from it works, but the following
is printed to the Terminal:
----->8
X Error of failed request: BadWindow (invalid Window parameter)
Major opcode of failed request: 148 ()
Minor opcode of failed request: 1
Resource id in failed request: 0x2c0073d
Serial number of failed request: 169
Current serial number in output stream: 171
----->8
So I speculate the difference between the case where the screensaver is run
from within xscreensaver and often hangs when it should quit, while it
successfully exits every time when run on its own, is due to xscreensaver
"stopping" the screensaver by destroying its window, and the screensaver
not coping well depending on when this happens.
Current backtrace:
Attaching to process 149972
[New LWP 149974]
[New LWP 149973]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
__syscall_cancel_arch () at
../sysdeps/unix/sysv/linux/x86_64/syscall_cancel.S:56
warning: 56 ../sysdeps/unix/sysv/linux/x86_64/syscall_cancel.S: No such
file or directory
(gdb) bt
#0 __syscall_cancel_arch () at
../sysdeps/unix/sysv/linux/x86_64/syscall_cancel.S:56
#1 0x00007f21c8e4d668 in __internal_syscall_cancel (a1=<optimized out>,
a2=<optimized out>, a3=<optimized out>, a4=a4@entry=0, a5=a5@entry=0,
a6=a6@entry=0,
nr=7) at ./nptl/cancellation.c:49
#2 0x00007f21c8e4d6ad in __syscall_cancel (a1=<optimized out>,
a2=<optimized out>, a3=<optimized out>, a4=a4@entry=0, a5=a5@entry=0,
a6=a6@entry=0, nr=7)
at ./nptl/cancellation.c:75
#3 0x00007f21c8ec19c6 in __GI___poll (fds=<optimized out>, nfds=<optimized
out>, timeout=<optimized out>) at ../sysdeps/unix/sysv/linux/poll.c:29
#4 0x00007f21c8cb0d82 in ?? () from /lib/x86_64-linux-gnu/libxcb.so.1
#5 0x00007f21c8cb2f12 in xcb_wait_for_special_event () from
/lib/x86_64-linux-gnu/libxcb.so.1
#6 0x00007f21c5efad47 in ?? () from /lib/x86_64-linux-gnu/
libgallium-25.2.5-1.so
#7 0x00007f21c5efaefd in ?? () from /lib/x86_64-linux-gnu/
libgallium-25.2.5-1.so
#8 0x00007f21c5efdbe1 in ?? () from /lib/x86_64-linux-gnu/
libgallium-25.2.5-1.so
#9 0x00007f21c5efdf98 in loader_dri3_get_buffers () from
/lib/x86_64-linux-gnu/libgallium-25.2.5-1.so
#10 0x00007f21c5eff8a4 in ?? () from /lib/x86_64-linux-gnu/
libgallium-25.2.5-1.so
#11 0x00007f21c5eff939 in ?? () from /lib/x86_64-linux-gnu/
libgallium-25.2.5-1.so
#12 0x00007f21c5ef6e44 in ?? () from /lib/x86_64-linux-gnu/
libgallium-25.2.5-1.so
#13 0x00007f21c5fa2aea in ?? () from /lib/x86_64-linux-gnu/
libgallium-25.2.5-1.so
#14 0x00007f21c5fa39b7 in ?? () from /lib/x86_64-linux-gnu/
libgallium-25.2.5-1.so
#15 0x00007f21c621b1f9 in ?? () from /lib/x86_64-linux-gnu/
libgallium-25.2.5-1.so
#16 0x00007f21c6220acf in ?? () from /lib/x86_64-linux-gnu/
libgallium-25.2.5-1.so
#17 0x0000559db4d57b2e in hack_draw (XStuff=<optimized out>,
currentTime=1761566877.2812519, frameTime=<optimized out>) at
./src/sundancer2.c:176
#18 0x0000559db4d570e6 in mainLoop () at ./src/driver.c:240
#19 0x0000559db4d56626 in main (argc=4, argv=0x7fff3e5c70f8) at
./src/driver.c:463