[GHC] #16297: Access violation and hang with template haskell

GHC ghc-devs at haskell.org
Sat Feb 9 04:59:52 UTC 2019


#16297: Access violation and hang with template haskell
-------------------------------------+-------------------------------------
           Reporter:  jeiea          |             Owner:  (none)
               Type:  bug            |            Status:  new
           Priority:  normal         |         Milestone:
          Component:  Compiler       |           Version:  8.6.3
           Keywords:                 |  Operating System:  Windows
       Architecture:  x86_64         |   Type of failure:  Compile-time
  (amd64)                            |  crash or panic
          Test Case:                 |        Blocked By:
           Blocking:                 |   Related Tickets:
Differential Rev(s):                 |         Wiki Page:
-------------------------------------+-------------------------------------
 I found this while building the haskell-ide-engine on windows. During that
 build I was stuck on two packages(fclabels, haskell-lsp-types).

 {{{
 D:\test>stack install --resolver lts-13.6 fclabels
 fclabels-2.0.3.3: configure
 fclabels-2.0.3.3: build

 --  While building package fclabels-2.0.3.3 using:
       C:\sr\setup-exe-cache\x86_64-windows\Cabal-
 simple_Z6RU0evB_2.4.0.1_ghc-8.6.3.exe --builddir=.stack-work\dist\e626a42b
 build --ghc-options " -ddump-hi -ddump-to-file -fdiagnostics-color=always"
     Process exited with code: ExitFailure 1
     Logs have been written to: C:\sr\global-project\.stack-
 work\logs\fclabels-2.0.3.3.log

     Configuring fclabels-2.0.3.3...
     Preprocessing library for fclabels-2.0.3.3..
     Building library for fclabels-2.0.3.3..
     [ 1 of 10] Compiling Data.Label.Point ( src\Data\Label\Point.hs,
 .stack-work\dist\e626a42b\build\Data\Label\Point.o )
     [ 2 of 10] Compiling Data.Label.Poly  ( src\Data\Label\Poly.hs,
 .stack-work\dist\e626a42b\build\Data\Label\Poly.o )
     [ 3 of 10] Compiling Data.Label.Partial ( src\Data\Label\Partial.hs,
 .stack-work\dist\e626a42b\build\Data\Label\Partial.o )
     [ 4 of 10] Compiling Data.Label.Mono  ( src\Data\Label\Mono.hs,
 .stack-work\dist\e626a42b\build\Data\Label\Mono.o )
     [ 5 of 10] Compiling Data.Label.Failing ( src\Data\Label\Failing.hs,
 .stack-work\dist\e626a42b\build\Data\Label\Failing.o )
     [ 6 of 10] Compiling Data.Label.Derive ( src\Data\Label\Derive.hs,
 .stack-work\dist\e626a42b\build\Data\Label\Derive.o )
     [ 7 of 10] Compiling Data.Label       ( src\Data\Label.hs, .stack-
 work\dist\e626a42b\build\Data\Label.o )
     [ 8 of 10] Compiling Data.Label.Base  ( src\Data\Label\Base.hs,
 .stack-work\dist\e626a42b\build\Data\Label\Base.o )
 -- doesn't terminate
 }}}

 {{{
 D:\test>stack install --resolver lts-13.6 haskell-lsp-types
 haskell-lsp-types-0.8.0.1: configure
 haskell-lsp-types-0.8.0.1: build

 --  While building package haskell-lsp-types-0.8.0.1 using:
       C:\sr\setup-exe-cache\x86_64-windows\Cabal-
 simple_Z6RU0evB_2.4.0.1_ghc-8.6.3.exe --builddir=.stack-work\dist\e626a42b
 build --ghc-options " -ddump-hi -ddump-to-file -fdiagnostics-color=always"
     Process exited with code: ExitFailure 11
     Logs have been written to: D:\Hoj\Desktop\fclabels-2.0.3.3\.stack-
 work\logs\haskell-lsp-types-0.8.0.1.log

     Configuring haskell-lsp-types-0.8.0.1...
     Preprocessing library for haskell-lsp-types-0.8.0.1..
     Building library for haskell-lsp-types-0.8.0.1..
     [ 1 of 24] Compiling Language.Haskell.LSP.Types.Constants (
 src\Language\Haskell\LSP\Types\Constants.hs, .stack-
 work\dist\e626a42b\build\Language\Haskell\LSP\Types\Constants.o )
     [ 2 of 24] Compiling Language.Haskell.LSP.Types.List (
 src\Language\Haskell\LSP\Types\List.hs, .stack-
 work\dist\e626a42b\build\Language\Haskell\LSP\Types\List.o )
     [ 3 of 24] Compiling Language.Haskell.LSP.Types.DocumentFilter (
 src\Language\Haskell\LSP\Types\DocumentFilter.hs, .stack-
 work\dist\e626a42b\build\Language\Haskell\LSP\Types\DocumentFilter.o )

     Access violation in generated code when reading 0x1017895900

      Attempting to reconstruct a stack trace...

        Frame    Code address
      * 0x4ffd920        0x17c3f148 C:\sr\snapshots\3233b5e2\lib\x86_64
 -windows-
 ghc-8.6.3\aeson-1.4.2.0-nGorlomFPWK9VTcoGhjmV\HSaeson-1.4.2.0-nGorlomFPWK9VTcoGhjmV.o+0x2f040
 (aesonzm1zi4zi2zi0zmnGorlomFPWK9VTcoGhjmV_DataziAesonziTH_consToValue_info+0x688)
 }}}

 I don't know if those two issues are same.

 I tried simplifying the former.

 {{{
 -- A.hs
 {-# LANGUAGE NoMonomorphismRestriction #-}
 {-# LANGUAGE TemplateHaskell #-}

 module A
   ( head
   , tail
   ) where

 -- import Prelude hiding (fst, snd, head, tail)
 -- import Control.Arrow (arr, Kleisli(..), ArrowApply, ArrowZero,
 ArrowChoice)
 import B (getLabel)

 -- data Point cat g i f o = Point (cat f o) (cat (cat o i, f) g)

 -- data PLens cat f o where
 --   PLens :: !(Point cat g i f o) -> PLens cat (f -> g) (o -> i)
 --   Id   :: ArrowApply cat => PLens cat f f

 -- type Lens cat f o = PLens cat (f -> f) (o -> o)

 -- head :: (ArrowZero arr, ArrowApply arr, ArrowChoice arr) => Lens arr
 [a] a
 -- tail :: (ArrowZero arr, ArrowApply arr, ArrowChoice arr) => Lens arr
 [a] [a]

 (head, tail) = $(getLabel ''[])
 }}}

 {{{
 -- B.hs
 {-# LANGUAGE TemplateHaskell #-}
 module B (getLabel) where
 import Language.Haskell.TH

 getLabel :: Name -> Q Exp
 getLabel = undefined
 }}}

 `stack exec ghc --resolver lts-13.6 -- A.hs B.hs` also hangs.

-- 
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/16297>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list