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