Skip to content

Suspicious behavior in break018

In !2608 (closed) we increased the unfolding-use threshold a bit to account for another change in our inlining behavior (see #15304 (closed)). However, doing so appears to reveal a bug in the GHCi debugger's type reconstruction logic. This manifests as break018 failing with

--- "/builds/ghc/ghc/tmp/ghctest-89bmrucp/test   spaces/testsuite/tests/ghci.debugger/scripts/break018.run/break018.stdout.normalised"	2020-03-17 06:13:45.708613951 +0000
+++ "/builds/ghc/ghc/tmp/ghctest-89bmrucp/test   spaces/testsuite/tests/ghci.debugger/scripts/break018.run/break018.run.stdout.normalised"	2020-03-17 06:13:45.712613941 +0000
@@ -8,7 +8,7 @@
 l :: N Char = _
 x :: Char = 'h'
 Stopped in Main.newNode, mdo.hs:(8,17)-(9,42)
-_result :: IO (N Char) = _
-b :: N Char = _
-c :: Char = 'h'
-f :: N Char = _
+_result :: IO (N Integer) = _
+b :: N Integer = _
+c :: Integer = 104
+f :: N Integer = _

This is very odd since the Core is largely unchanged; the only difference is that we decide to inline newNode into ll. However, AFAICT this can't possibly be the issue: ll isn't even called in this test (it's only defined because mdo.hs is also used by another test, dynbrk004).

Edited by Ben Gamari
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information