From 8a2498279bb2bd43ba0d969486595c5d246f7e91 Mon Sep 17 00:00:00 2001
From: Ben Gamari <ben@smart-cactus.org>
Date: Fri, 8 Nov 2024 12:26:02 -0500
Subject: [PATCH] base: Label signal handling threads

Addresses part of #25452.

Addresses core-libraries-committee#305.
---
 libraries/ghc-internal/src/GHC/Internal/Conc/Signal.hs | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/libraries/ghc-internal/src/GHC/Internal/Conc/Signal.hs b/libraries/ghc-internal/src/GHC/Internal/Conc/Signal.hs
index 9d9da660c1f..59265201b87 100644
--- a/libraries/ghc-internal/src/GHC/Internal/Conc/Signal.hs
+++ b/libraries/ghc-internal/src/GHC/Internal/Conc/Signal.hs
@@ -19,7 +19,7 @@ import GHC.Internal.Foreign.Ptr (Ptr, castPtr)
 import GHC.Internal.Foreign.Marshal.Alloc (finalizerFree)
 import GHC.Internal.Arr (inRange)
 import GHC.Internal.Base
-import GHC.Internal.Conc.Sync (forkIO)
+import GHC.Internal.Conc.Sync (myThreadId, labelThread, forkIO)
 import GHC.Internal.IO (mask_, unsafePerformIO)
 import GHC.Internal.IOArray (IOArray, boundsIOArray, newIOArray,
                     unsafeReadIOArray, unsafeWriteIOArray)
@@ -69,7 +69,10 @@ runHandlers p_info sig = do
       else do handler <- unsafeReadIOArray arr int
               case handler of
                 Nothing -> return ()
-                Just (f,_)  -> do _ <- forkIO (f p_info)
+                Just (f,_)  -> do _ <- forkIO $ do
+                                    tid <- myThreadId
+                                    labelThread tid "signal handler"
+                                    f p_info
                                   return ()
 
 -- It is our responsibility to free the memory buffer, so we create a
-- 
GitLab