Skip to content

Commit 55e1303

Browse files
rappieelopez
authored andcommitted
Start event listener before workers
1 parent 4f0f364 commit 55e1303

1 file changed

Lines changed: 13 additions & 5 deletions

File tree

lib/Echidna/UI.hs

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -97,15 +97,20 @@ ui vm dict initialCorpus cliSelectedContract = do
9797

9898
corpusSaverStopVar <- spawnListener (saveCorpusEvent env)
9999

100-
workers <- forM (zip corpusChunks [0..(nworkers-1)]) $
101-
uncurry (spawnWorker env perWorkerTestLimit)
100+
let spawnWorkers =
101+
forM (zip corpusChunks [0..(nworkers-1)]) $
102+
uncurry (spawnWorker env perWorkerTestLimit)
102103

103104
case effectiveMode of
104105
Interactive -> do
105106
-- Channel to push events to update UI
106107
uiChannel <- liftIO $ newBChan 1000
107108
let forwardEvent = void . writeBChanNonBlocking uiChannel . EventReceived
109+
110+
-- Attach the log/event forwarder before workers start so early worker
111+
-- events (like startup logs) are not lost by dupChan.
108112
uiEventsForwarderStopVar <- spawnListener forwardEvent
113+
workers <- spawnWorkers
109114

110115
ticker <- liftIO . forkIO . forever $ do
111116
threadDelay 200_000 -- 200 ms
@@ -174,16 +179,19 @@ ui vm dict initialCorpus cliSelectedContract = do
174179
NonInteractive outputFormat -> do
175180
serverStopVar <- newEmptyMVar
176181

182+
let forwardEvent ev = putStrLn =<< runReaderT (ppLogLine vm ev) env
183+
-- Attach the log/event forwarder before workers start so early worker
184+
-- events (like startup logs) are not lost by dupChan.
185+
uiEventsForwarderStopVar <- spawnListener forwardEvent
186+
workers <- spawnWorkers
187+
177188
-- Handles ctrl-c
178189
liftIO $ forM_ [sigINT, sigTERM] $ \sig ->
179190
let handler _ = do
180191
stopWorkers workers
181192
void $ tryPutMVar serverStopVar ()
182193
in installHandler sig handler
183194

184-
let forwardEvent ev = putStrLn =<< runReaderT (ppLogLine vm ev) env
185-
uiEventsForwarderStopVar <- spawnListener forwardEvent
186-
187195
-- Track last update time and gas for delta calculation
188196
startTime <- liftIO getTimestamp
189197
lastUpdateRef <- liftIO $ newIORef $ GasTracker startTime 0

0 commit comments

Comments
 (0)