diff -urN ../nagios.orig/base/utils.c ./base/utils.c
--- ../nagios.orig/base/utils.c	Wed Apr 27 17:45:29 2005
+++ ./base/utils.c	Fri Apr 29 13:05:29 2005
@@ -4675,8 +4675,24 @@
 		pollval=poll(&pfd,1,500);
 
 		/* loop if no data */
-		if(pollval<=0)
+		if(pollval==0)
 			continue;
+
+		/* check for errors */
+		if(pollval==-1) {
+			if(errno==EBADF)
+				write_to_log("service_result_worker_thread(): poll(): EBADF", logging_options, NULL);
+			else if(errno==ENOMEM)
+				write_to_log("service_result_worker_thread(): poll(): ENOMEM", logging_options, NULL);
+			else if(errno==EFAULT)
+				write_to_log("service_result_worker_thread(): poll(): EFAULT", logging_options, NULL);
+			else if(errno==EINTR) /* this should NEVER happen */
+				write_to_log("service_result_worker_thread(): poll(): EINTR (impossible)", logging_options, NULL);
+			else
+				write_to_log("service_result_worker_thread(): poll(): Unknown errno value.", logging_options, NULL);
+
+			continue;
+		}
 
 		/* should we shutdown? */
 		pthread_testcancel();
