[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#764840: Wrong return value from select on Hurd



Package: glibc
Version: 2.19-11
Severity: serious

The return value from the select function on Hurd is sometimes too high.
I.e. the value returned is greater than the total number of bits set in
the fd_set variables.

This causes problems for code that expect the value to be accurate, and
causes FTBFS on Hurd for other packages due to failing tests suites,
e.g. globus-ftp-client, globus-ftp-control, globus-io and
globus-scheduler-event-generator.

The bug is introduced by the patch
debian/patches/hurd-i386/tg-poll_errors_fixes.diff

The attached patch can be applied to fix the issue.

	Mattias

--- glibc-2.19/hurd/hurdselect.c.orig	2014-10-11 05:55:04.000000000 +0000
+++ glibc-2.19/hurd/hurdselect.c	2014-10-11 14:23:17.000000000 +0000
@@ -551,7 +551,15 @@
 	       readiness of the erring object and the next call hopefully
 	       will get the error again.  */
 	    if (type & SELECT_ERROR)
-	      type = SELECT_ALL;
+	      {
+		type = 0;
+		if (readfds != NULL && FD_ISSET (i, readfds))
+		  type |= SELECT_READ;
+		if (writefds != NULL && FD_ISSET (i, writefds))
+		  type |= SELECT_WRITE;
+		if (exceptfds != NULL && FD_ISSET (i, exceptfds))
+		  type |= SELECT_URG;
+	      }
 
 	    if (type & SELECT_READ)
 	      ready++;

Attachment: signature.asc
Description: This is a digitally signed message part


Reply to: