i just installed 2.3.2.1 on solaris 2.5.1 using gcc 2.8.0 and immediately ran into a problem where the update task stopped being invoked. a quick check with the debugger showed that UpdateDaemonPid was non zero, but that process had exited, so it would never start a new update task. poking around at the source i noticed that signal delivery for children is not safe from interruption and upon further inspection i notice that the code uses both sigaction and signal, sometimes one right after the other. why? if sigaction is assumed to exist, then use it for everything. that way you get safe delivery, automatic blocking, the whole works. so, before i go make the code use sigaction everywhere, is there a good reason why signal is still being used?