Skip to content

Windows/appveyor hang/crash related to unicode syntax and SPECIALIZE warning, GHC 8.4.4 and 8.6.5

Summary

GHC on Windows on the appveyor CI service gets stuck in a bad way building text-printer-0.5, related to a warning on a SPECIALIZE pragma.

Compare https://github.com/mvv/text-printer/issues/1.

The warning output preceding the hang is as follows. (The replacement character is due to use of a literal alpha (α) in the source code, but does not appear to be involved in the bug.)

src\Text\Printer\Integral.hs:656:1: [;1mwarning:[;1m[;1m
Forall'd constraint `Ord �' is not bound in RULE lhs
  Orig bndrs: [�, p, $dOrd_amc3, $dIntegral_amc4, $dPrinter_amc5]
  Orig lhs: let {
              $dPrinter_amcc :: Printer p
              [LclId]
              $dPrinter_amcc = $dPrinter_amc5 } in
            let {
              $dIntegral_amcb :: Integral �
              [LclId]
              $dIntegral_amcb = $dIntegral_amc4 } in
            let {
              $dPositionalSystem_amc9 :: PositionalSystem Binary
              [LclId]
              $dPositionalSystem_amc9
                = Text.Printer.Integral.$fPositionalSystemBinary } in
            let {
              $dReal_aow8 :: Real �
              [LclId]
              $dReal_aow8 = GHC.Real.$p1Integral @ � $dIntegral_amc4 } in
            let {
              $dOrd_aowb :: Ord �
              [LclId]
              $dOrd_aowb = GHC.Real.$p2Real @ � $dReal_aow8 } in
            let {
              $dOrd_amca :: Ord �
              [LclId]
              $dOrd_amca = $dOrd_aowb } in
            number'
              @ Binary
              @ �
              @ p
              $dPositionalSystem_amc9
              $dOrd_amca
              $dIntegral_amcb
              $dPrinter_amcc
  optimised lhs: number'
                   @ Binary
                   @ �
                   @ p
                   $dPositionalSystem_amc9
                   $dOrd_amca
                   $dIntegral_amc4
                   $dPrinter_amc5

The build completes fine after removing the redundant Ord constraint.

Steps to reproduce

Probably, it's enough to try building text-printer-0.5 on Windows. But the following is how I get it to fail:

  1. fork github.com/mvv/text-printer on github
  2. set up appveyor integration for that fork
  3. fetch and push the branch windows-broken from github.com/robx/text-printer

The build should get stuck (not fail) after printing the SPECIALIZE warning.

Expected behavior

The build should complete successfully.

Environment

  • GHC version used: GHC 8.4.4, GHC 8.6.5

I used these by building with stackage lts-12.26 and lts-13.27.

Optional:

  • Operating System: Windows
  • System Architecture: x64 (appveyor platform field)
Edited by Robert
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information