summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthew Pickering <matthewtpickering@gmail.com>2021-11-16 15:38:24 +0000
committerMatthew Pickering <matthewtpickering@gmail.com>2021-11-16 15:38:24 +0000
commitff5e236867320156627990085b475a902b1fee88 (patch)
tree1367daf8531c39b47521956317ed52876235d9ad
parent3e94b5a7ebddf156f00599c6bd2e9ba1af437a6c (diff)
downloadhaskell-revert-41117d71.tar.gz
Revert "base: Use one-shot kqueue on macOS"revert-41117d71
This reverts commit 41117d71bb58e001f6a2b6a11c9314d5b70b9182
-rw-r--r--libraries/base/GHC/Event/Manager.hs17
-rwxr-xr-x[-rw-r--r--]testsuite/tests/rts/flags/T20006.hs0
2 files changed, 15 insertions, 2 deletions
diff --git a/libraries/base/GHC/Event/Manager.hs b/libraries/base/GHC/Event/Manager.hs
index 569473309f..b086cbe748 100644
--- a/libraries/base/GHC/Event/Manager.hs
+++ b/libraries/base/GHC/Event/Manager.hs
@@ -148,7 +148,9 @@ callbackTableVar mgr fd = emFds mgr ! hashFd fd
haveOneShot :: Bool
{-# INLINE haveOneShot #-}
-#if defined(HAVE_EPOLL) || defined(HAVE_KQUEUE)
+#if defined(darwin_HOST_OS) || defined(ios_HOST_OS)
+haveOneShot = False
+#elif defined(HAVE_EPOLL) || defined(HAVE_KQUEUE)
haveOneShot = True
#else
haveOneShot = False
@@ -361,9 +363,20 @@ registerFd mgr cb fd evs lt = do
return r
{-# INLINE registerFd #-}
+{-
+ Building GHC with parallel IO manager on Mac freezes when
+ compiling the dph libraries in the phase 2. As workaround, we
+ don't use oneshot and we wake up an IO manager on Mac every time
+ when we register an event.
+
+ For more information, please read:
+ https://gitlab.haskell.org/ghc/ghc/issues/7651
+-}
-- | Wake up the event manager.
wakeManager :: EventManager -> IO ()
-#if defined(HAVE_EPOLL) || defined(HAVE_KQUEUE)
+#if defined(darwin_HOST_OS) || defined(ios_HOST_OS)
+wakeManager mgr = sendWakeup (emControl mgr)
+#elif defined(HAVE_EPOLL) || defined(HAVE_KQUEUE)
wakeManager _ = return ()
#else
wakeManager mgr = sendWakeup (emControl mgr)
diff --git a/testsuite/tests/rts/flags/T20006.hs b/testsuite/tests/rts/flags/T20006.hs
index d82a4bd93b..d82a4bd93b 100644..100755
--- a/testsuite/tests/rts/flags/T20006.hs
+++ b/testsuite/tests/rts/flags/T20006.hs