Author: sthibault
Date: 2016-01-03 03:29:25 +0000 (Sun, 03 Jan 2016)
New Revision: 6854

Added:
   glibc-package/trunk/debian/patches/hurd-i386/cvs-libpthread-sigstate.diff
Modified:
   glibc-package/trunk/debian/changelog
   glibc-package/trunk/debian/patches/series
Log:
* patches/hurd-i386/cvs-libpthread-sigstate.diff: New patch to fix spurious
signal blocking leading to sigill.  Fixes rsyslog tests.


Modified: glibc-package/trunk/debian/changelog
===================================================================
--- glibc-package/trunk/debian/changelog        2016-01-02 13:53:21 UTC (rev 
6853)
+++ glibc-package/trunk/debian/changelog        2016-01-03 03:29:25 UTC (rev 
6854)
@@ -7,6 +7,10 @@
   * Update French debconf translation, by Christian Perrier.  Closes:
     #809636.
 
+  [ Samuel Thibault ]
+  * patches/hurd-i386/cvs-libpthread-sigstate.diff: New patch to fix spurious
+    signal blocking leading to sigill.  Fixes rsyslog tests.
+
  -- Aurelien Jarno <[email protected]>  Fri, 25 Dec 2015 03:38:46 +0100
 
 glibc (2.21-6) unstable; urgency=medium

Added: glibc-package/trunk/debian/patches/hurd-i386/cvs-libpthread-sigstate.diff
===================================================================
--- glibc-package/trunk/debian/patches/hurd-i386/cvs-libpthread-sigstate.diff   
                        (rev 0)
+++ glibc-package/trunk/debian/patches/hurd-i386/cvs-libpthread-sigstate.diff   
2016-01-03 03:29:25 UTC (rev 6854)
@@ -0,0 +1,57 @@
+commit 6106225fdc09f013ec4f7b1d7ec82780061c8a14
+Author: Samuel Thibault <[email protected]>
+Date:   Sun Jan 3 04:20:02 2016 +0100
+
+    Do not block unmaskable signals
+    
+    * sysdeps/mach/hurd/pt-sigstate.c (__pthread_sigstate): Always remove
+    _SIG_CANT_MASK from blocked signals, like sigprocmask does.
+
+--- a/libpthread/sysdeps/mach/hurd/pt-sigstate.c
++++ b/libpthread/sysdeps/mach/hurd/pt-sigstate.c
+@@ -43,24 +43,27 @@ __pthread_sigstate (struct __pthread *thread, int how,
+     *oset = ss->blocked;
+ 
+   if (set)
+-    switch (how)
+-      {
+-      case SIG_BLOCK:
+-      ss->blocked |= *set;
+-      break;
+-
+-      case SIG_SETMASK:
+-      ss->blocked = *set;
+-      break;
+-
+-      case SIG_UNBLOCK:
+-      ss->blocked &= ~*set;
+-      break;
+-
+-      default:
+-      err = EINVAL;
+-      break;
+-      }
++    {
++      switch (how)
++      {
++      case SIG_BLOCK:
++        ss->blocked |= *set;
++        break;
++
++      case SIG_SETMASK:
++        ss->blocked = *set;
++        break;
++
++      case SIG_UNBLOCK:
++        ss->blocked &= ~*set;
++        break;
++
++      default:
++        err = EINVAL;
++        break;
++      }
++      ss->blocked &= ~_SIG_CANT_MASK;
++    }
+ 
+   if (! err && clear_pending)
+     __sigemptyset (&ss->pending);

Modified: glibc-package/trunk/debian/patches/series
===================================================================
--- glibc-package/trunk/debian/patches/series   2016-01-02 13:53:21 UTC (rev 
6853)
+++ glibc-package/trunk/debian/patches/series   2016-01-03 03:29:25 UTC (rev 
6854)
@@ -168,6 +168,7 @@
 hurd-i386/local-mach_print.diff
 hurd-i386/cvs-hidden.diff
 hurd-i386/cvs-libpthread-api.diff
+hurd-i386/cvs-libpthread-sigstate.diff
 
 i386/local-biarch.diff
 i386/local-cmov.diff

Reply via email to