Author: sthibault Date: 2013-01-05 16:08:33 +0000 (Sat, 05 Jan 2013) New Revision: 5435
Added: glibc-package/trunk/debian/patches/hurd-i386/unsubmitted-select-EINTR.diff Modified: glibc-package/trunk/debian/changelog glibc-package/trunk/debian/patches/series Log: patches/hurd-i386/unsubmitted-select-EINTR.diff: Fix select vs signals. Modified: glibc-package/trunk/debian/changelog =================================================================== --- glibc-package/trunk/debian/changelog 2013-01-05 02:32:43 UTC (rev 5434) +++ glibc-package/trunk/debian/changelog 2013-01-05 16:08:33 UTC (rev 5435) @@ -4,6 +4,7 @@ [ Samuel Thibault ] * patches/hurd-i386/unsubmitted-setitimer_fix.diff: Finish fixing setitimer. + * patches/hurd-i386/unsubmitted-select-EINTR.diff: Fix select vs signals. -- Adam Conrad <[email protected]> Sun, 30 Dec 2012 10:22:43 -0700 Added: glibc-package/trunk/debian/patches/hurd-i386/unsubmitted-select-EINTR.diff =================================================================== --- glibc-package/trunk/debian/patches/hurd-i386/unsubmitted-select-EINTR.diff (rev 0) +++ glibc-package/trunk/debian/patches/hurd-i386/unsubmitted-select-EINTR.diff 2013-01-05 16:08:33 UTC (rev 5435) @@ -0,0 +1,30 @@ +We need to set MACH_RCV_INTERRUPT to avoid __mach_msg looping on signals, and +then handle the interruption. + +--- + hurdselect.c | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +diff --git a/hurd/hurdselect.c b/hurd/hurdselect.c +index 21ba5f4..8fb2931 100644 +--- a/hurd/hurdselect.c ++++ b/hurd/hurdselect.c +@@ -335,7 +335,7 @@ _hurd_select (int nfds, + mach_msg_option_t options = (timeout == NULL ? 0 : MACH_RCV_TIMEOUT); + error_t msgerr; + while ((msgerr = __mach_msg (&msg.head, +- MACH_RCV_MSG | options, ++ MACH_RCV_MSG | MACH_RCV_INTERRUPT | options, + 0, sizeof msg, portset, to, + MACH_PORT_NULL)) == MACH_MSG_SUCCESS) + { +@@ -407,6 +407,9 @@ _hurd_select (int nfds, + effect a poll, so ERR is MACH_RCV_TIMED_OUT when the poll finds no + message waiting. */ + err = 0; ++ if (msgerr == MACH_RCV_INTERRUPTED) ++ /* Interruption on our side (e.g. signal reception). */ ++ err = EINTR; + + if (got) + /* At least one descriptor is known to be ready now, so we will Modified: glibc-package/trunk/debian/patches/series =================================================================== --- glibc-package/trunk/debian/patches/series 2013-01-05 02:32:43 UTC (rev 5434) +++ glibc-package/trunk/debian/patches/series 2013-01-05 16:08:33 UTC (rev 5435) @@ -214,6 +214,7 @@ hurd-i386/tg-hurdsig-boot-fix.diff hurd-i386/unsubmitted-single-hurdselect-timeout.diff hurd-i386/unsubmitted-setitimer_fix.diff +hurd-i386/unsubmitted-select-EINTR.diff kfreebsd/submitted-libc_once.diff kfreebsd/local-getaddrinfo-freebsd-kernel.diff -- To UNSUBSCRIBE, email to [email protected] with a subject of "unsubscribe". Trouble? Contact [email protected] Archive: http://lists.debian.org/[email protected]

