-
Notifications
You must be signed in to change notification settings - Fork 21
Description
Building the following code (e.g. with stack build
) and then running haskell-code-explorer
results in a segfault (yes, a segfault in Haskell, yikes!):
module Lib where
import Prelude
import qualified Data.Yaml as Yaml
import Language.Haskell.TH (Exp, Q, runIO)
import Language.Haskell.TH.Syntax (addDependentFile)
migrations :: ()
migrations = $(do
_ <- runIO (Yaml.decodeFileEither "file.txt" :: IO (Either Yaml.ParseException Yaml.Value))
[|()|])
The above snippet is of course silly, but I encountered the bug in a real project and the above is the result of deleting as much as possible from that project in order to create a minimal repro case. I have put the code in a git repository for your convenience: https://github.com/gelisam/haskell-code-explorer-bug
Note that since this is TemplateHaskell code, the Yaml.decodeFileEither "file.txt"
is executed at compile time. Building the project succeeds, so it doesn't seem to be a bug in the yaml
package. However, replacing Yaml.decodeFileEither "file.txt"
with the simpler readFile "file.txt"
does not trigger the bug, so there must be some weird interaction between the yaml
library and haskell-code-explorer. Since the symptom is a segfault, I suspect it has to do with the libyaml C library it uses under the hood.