
Антон Десятов
Hello dear GHC developers,
I have recently experienced what I believe to be a bug either in GHC or in Warp library (if it is indeed in Warp then sorry for posting to wrong mailing list). I've managed to shrink it to a few lines of code and publish on a GitHub. Here is the link: https://github.com/anton-dessiatov/warp-ghc-issue
What I wanted to do is to establish network connection in my code and then at some point pass it to Warp for further processing. What I got is that after successfully processing first HTTP request my program consumes 100% CPU and eventually crashes with an error like this:
*** Error in `/home/farnsworth/work/warp-ghc-issue/.stack-work/install/x86_64-linux/lts-5.5/7.10.3/bin/warp-ghc-issue': double free or corruption (!prev): 0x00000000016214b0 *** Aborted (core dumped)
When compiled with -debug I see another message:
repro: internal error: ASSERTION FAILED: file rts/Schedule.h, line 137
(GHC version 7.10.3 for x86_64_unknown_linux) Please report this as a GHC bug: http://www.haskell.org/ghc/reportabug Aborted (core dumped)
I tried to debug it by enabling -dcore-lint and -debug in my ~/.stack/config.yaml and what worries me is that in this case Warp itself doesn't compile (tried with 7.10.2 and 7.10.3) giving core lint failure in Network.Wai.Handler.Warp.HTTP2.Worker. Not sure if it is relevant, but looks suspicious.
This indeed quite relevant and concerning. Core lint issues should not occur; they mean that somehow GHC has taken correct code (it typechecked, afterall) and turned it into something horrible. That being said, I'm afraid I can't reproduce this issue locally. What warp version are you building against? In the meantime, could you open a bug on the GHC Trac for this issue? It would be quite helpful if you could attach the output from Core Lint when you do so. Cheers, - Ben