Haskell-Stack:构建期间的访问冲突错误

时间:2018-01-12 19:11:48

标签: haskell haskell-stack

我过去几天一直在尝试使用堆栈构建我的Haskell项目,并且我遇到了访问冲突错误。根据我的理解,我有最新的堆栈版本和GHC。

这一切都在最初工作,直到我将库添加到我的cabal文件中。我现在已将其删除,但错误仍然存​​在。我还回到了我的代码肯定正在工作的时候,所以我确定这是由堆栈引起的。

我尝试卸载堆栈,删除.stack-work并重新安装。然后进行堆栈设置。我尝试过多种命令,但没有结果。

我现在也尝试使用Stack创建一个新项目并构建它,我也遇到了同样的问题。

stack build

Building all executables for `haskell-project' once. After a successful build of all of them, only specified executables will be rebuilt.
haskell-project-0.1.0.0: configure (exe)
Access violation in generated code when reading 000000000e58391a

--  While building custom Setup.hs for package haskell-project-0.1.0.0 using:
      C:\sr\setup-exe-cache\x86_64-windows\Cabal-simple_Z6RU0evB_2.0.1.0_ghc-8.2.2.exe --builddir=.stack-work\dist\5c8418a7 configure --with-ghc=C:\Users\Michael\AppData\Local\Programs\stack\x86_64-windows\ghc-8.2.2\bin\ghc.EXE --with-ghc-pkg=C:\Users\Michael\AppData\Local\Programs\stack\x86_64-windows\ghc-8.2.2\bin\ghc-pkg.EXE --user --package-db=clear --package-db=global --package-db=C:\sr\snapshots\13cecb13\pkgdb --package-db=C:\Users\Michael\Desktop\haskell-project\.stack-work\install\ccbce92a\pkgdb --libdir=C:\Users\Michael\Desktop\haskell-project\.stack-work\install\ccbce92a\lib --bindir=C:\Users\Michael\Desktop\haskell-project\.stack-work\install\ccbce92a\bin --datadir=C:\Users\Michael\Desktop\haskell-project\.stack-work\install\ccbce92a\share --libexecdir=C:\Users\Michael\Desktop\haskell-project\.stack-work\install\ccbce92a\libexec --sysconfdir=C:\Users\Michael\Desktop\haskell-project\.stack-work\install\ccbce92a\etc --docdir=C:\Users\Michael\Desktop\haskell-project\.stack-work\install\ccbce92a\doc\haskell-project-0.1.0.0 --htmldir=C:\Users\Michael\Desktop\haskell-project\.stack-work\install\ccbce92a\doc\haskell-project-0.1.0.0 --haddockdir=C:\Users\Michael\Desktop\haskell-project\.stack-work\install\ccbce92a\doc\haskell-project-0.1.0.0 --dependency=base=base-4.10.1.0 --dependency=containers=containers-0.5.10.2 --dependency=mtl=mtl-2.2.1-DscMMmDQUE6GBfOSl4qMUH --dependency=parsec=parsec-3.1.11-3BgBURmbRiVF8fgoxhAiBa --dependency=pretty-simple=pretty-simple-2.0.1.0-J3QTM6x6LHL5fhqavYvVhJ --dependency=text=text-1.2.2.2-9VTsh6V7U7hpagw2HDvpZ --extra-include-dirs=C:\Users\Michael\AppData\Local\Programs\stack\x86_64-windows\msys2-20150512\mingw64\include --extra-lib-dirs=C:\Users\Michael\AppData\Local\Programs\stack\x86_64-windows\msys2-20150512\mingw64\bin --extra-lib-dirs=C:\Users\Michael\AppData\Local\Programs\stack\x86_64-windows\msys2-20150512\mingw64\lib --enable-tests --enable-benchmarks
    Process exited with code: ExitFailure 1

解决此问题或可能原因的步骤是什么?

2 个答案:

答案 0 :(得分:2)

我设法为遇到同样问题的人找到临时解决方案。

我将cabal降级为版本1.24.0.2并将解析器更改为使用GHC版本8.0.1(resolver: ghc-8.0.1)。

然后运行stack solver我现在能够构建。

答案 1 :(得分:1)

除了issue #3765之外,堆栈跟踪器上的Michael's answer还有一些解决方法。

最好的解决方案似乎是取消设置__COMPAT_LAYER,将其设置为INSTALLER可以重现该错误。

C:\>set __COMPAT_LAYER=

原因可能是某些版本的GHC中的错误,该错误正在捕获应传播给用户的异常。如果是这种情况,则说明存在潜在的问题,并且此错误将其隐藏了。

请添加关于上述问题的评论,因为这将有助于维护人员跟踪此问题的普遍性。