Upstream 2.42 has a much more involved cleanup fix which in the end
boils down to this.

Index: glibc-upstream/sysdeps/mach/hurd/htl/pt-sigstate.c
===================================================================
--- glibc-upstream.orig/sysdeps/mach/hurd/htl/pt-sigstate.c
+++ glibc-upstream/sysdeps/mach/hurd/htl/pt-sigstate.c
@@ -36,7 +36,10 @@ __pthread_sigstate (struct __pthread *th
   if (set != NULL)
     new = *set;
 
-  ss = _hurd_thread_sigstate (thread->kernel_thread);
+  if (thread == _pthread_self ())
+    ss = _hurd_self_sigstate ();
+  else
+    ss = _hurd_thread_sigstate (thread->kernel_thread);
   assert (ss);
 
   _hurd_sigstate_lock (ss);
