From 133940df94b1e8745598699a492e5c9534644d75 Mon Sep 17 00:00:00 2001 From: Luke Lau Date: Thu, 14 May 2020 21:18:13 +0100 Subject: [PATCH] Fix listener thread listening after the server process was stopped Therefore fixes hGetLine: illegal operation (handle is closed) exceptions, because the handles were being closed whilst the listener thread was still reading from them. Fixes #66 --- src/Language/Haskell/LSP/Test/Session.hs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Language/Haskell/LSP/Test/Session.hs b/src/Language/Haskell/LSP/Test/Session.hs index 56e206d..9076a8e 100644 --- a/src/Language/Haskell/LSP/Test/Session.hs +++ b/src/Language/Haskell/LSP/Test/Session.hs @@ -267,7 +267,9 @@ runSessionWithHandles serverIn serverOut serverProc serverHandler config caps ro serverAndListenerFinalizer tid = do finally (timeout (messageTimeout config * 1^6) (runSession' exitServer)) - (cleanupProcess server >> killThread tid) + -- Make sure to kill the listener first, before closing + -- handles etc via cleanupProcess + (killThread tid >> cleanupProcess server) (result, _) <- bracket serverListenerLauncher serverAndListenerFinalizer -- 2.30.2