I have additional information. Here are the last lines of truss output for the pyro process:
pollsys(0xFFFFFC7FFFDFF058, 1, 0x00000000, 0x00000000) = 1
writev(3, 0xFFFFFC7FFFDFF1A0, 3) = 5956
pollsys(0xFFFFFC7FFFDFF098, 1, 0x00000000, 0x00000000) = 1
recvmsg(3, 0xFFFFFC7FFFDFEFC0, 32768) = 32
pollsys(0xFFFFFC7FFFDFF180, 0, 0xFFFFFC7FFFDFF270, 0x00000000) = 0
recvmsg(3, 0xFFFFFC7FFFDFF0C0, 32768) Err#11 EAGAIN
recvmsg(3, 0xFFFFFC7FFFDFF0A0, 32768) Err#11 EAGAIN
recvmsg(3, 0xFFFFFC7FFFDFF0C0, 32768) Err#11 EAGAIN
recvmsg(3, 0xFFFFFC7FFFDFF0A0, 32768) Err#11 EAGAIN
pollsys(0xFFFFFC7FFFDF6FE0, 1, 0xFFFFFC7FFFDF70F0, 0x00000000) = 0
recvmsg(3, 0xFFFFFC7FFFDFF120, 32768) Err#11 EAGAIN
recvmsg(3, 0xFFFFFC7FFFDFF100, 32768) Err#11 EAGAIN
pollsys(0xFFFFFC7FFFDFF058, 1, 0x00000000, 0x00000000) = 1
writev(3, 0xFFFFFC7FFFDFF1A0, 3) = 5796
Received signal #15, SIGTERM, in pollsys() [default]
siginfo: SIGTERM pid=2021 uid=107
pollsys(0xFFFFFC7FFFDFF098, 1, 0x00000000, 0x00000000) Err#4 EINTR
After that process terminated, a new one started up with the same path name and options. It must have been started by xscreensaver . That will be the error. The green error message did not appear at that time, although it did appear 600 seconds later. By this time, the new process was running. The pid shown belongs to xscreensaver. The uid belongs to xscreensaver too.
As far as I can tell, the pyro process handled the signal correctly. The error must be within xscreensaver. This used to work, with no errors. The settings are all left at the defaults.