--- ./slave.c	2006/05/03 02:58:56	1.2
+++ ./slave.c	2006/05/03 02:59:59
@@ -4835,10 +4835,23 @@ gdm_slave_handle_usr2_message (void)
 static void
 gdm_slave_usr2_handler (int sig)
 {
+	fd_set rfds;
+	struct timeval tv;
+
 	gdm_in_signal++;
 	in_usr2_signal++;
 
-	gdm_slave_handle_usr2_message ();
+	FD_ZERO (&rfds);
+	FD_SET (d->slave_notify_fd, &rfds);
+
+	tv.tv_sec = 0;
+	tv.tv_usec = 0;
+
+	if (select (d->slave_notify_fd+1, &rfds, NULL, NULL, &tv) > 0) {
+		gdm_slave_handle_usr2_message ();
+	} else {
+		gdm_debug("gdm_slave_usr2_handler: no data ready to read");
+	}
 
 	in_usr2_signal--;
 	gdm_in_signal--;
