One common bit of boilerplate we use in the various parts of GDM is the
gdm_signal_handler* functions. They handle bridging asynchronous unix
signals to the glib main loop so they can be processes safely.
It doesn't make sense to use those functions in the worker, though.
Often the worker will be blocking in a PAM module instead of the glib
main loop, so deferring signal handling until the main loop iterates,
may be deferring signal handling indefinitely.
This is especially bad for the worker, since the slave sends a TERM
signal to the greeter to terminate the PAM conversation. The above code
meant that some conversations were never getting terminated.