GHC 恐慌:加载临时共享对象失败
GHC Panic: Loading temp shared object failed
我们正在开发 Parsec 的分支(具有完整的 QuickCheck 测试套件、更好的错误消息和其他改进)并且已经取得了一些进展。大多数时候,我使用 Emacs 中的 REPL,指定构建目标 tests
(即,显然是测试套件的名称)。这一直运行良好。
现在我们的东西通过了测试,一切似乎都很好,但是如果我用库目标启动 REPL(或省略它,即 cabal repl
或 cabal repl lib:megaparsec
)并做一些事情,我得到GHC 恐慌:
λ> parseTest (string "rere" <* eof) "reri"
ghc: panic! (the 'impossible' happened)
(GHC version 7.10.1 for x86_64-unknown-linux):
Loading temp shared object failed: /tmp/ghc9380_0/libghc9380_93.so: undefined symbol: _hpc_tickboxes_megapzuEw3SHAmfXgNLpm5a31oXO6_TextziMegaparsecziError_hpc
Please report this as a GHC bug: http://www.haskell.org/ghc/reportabug
由于代码通过 cabal repl tests
编译并运行良好,我断定无论如何这不是我的编程错误,但可能是一个错误。
我找到了这张票:https://ghc.haskell.org/trac/ghc/ticket/10761,但我们的图书馆不使用模板 Haskell。
实际问题是:我应该怎么办以及如何解决这个问题?我什至不知道它是 Cabal 还是 GHC,我不知道如何构建可以重现问题的最小示例。
我已经举报了:
如果仔细阅读错误,您会发现缺少的函数与 hpc 相关:
undefined symbol: _hpc_tickboxes_megapzuEw3SHAmfXgNLpm5a31oXO6_TextziMegaparsecziError_hpc
我的猜测是 HPC(haskell 程序覆盖率)执行的检测与 GHCi 执行的 haskell 代码的交互式加载不兼容。禁用 HPC(cabal clean
后跟 cabal configure
,确保在配置时禁用覆盖)应该可以解决问题。
我建议在 GHC 错误跟踪器上报告一个错误(尽管这也可能是一个 cabal 错误,不确定是谁的错)。
我们正在开发 Parsec 的分支(具有完整的 QuickCheck 测试套件、更好的错误消息和其他改进)并且已经取得了一些进展。大多数时候,我使用 Emacs 中的 REPL,指定构建目标 tests
(即,显然是测试套件的名称)。这一直运行良好。
现在我们的东西通过了测试,一切似乎都很好,但是如果我用库目标启动 REPL(或省略它,即 cabal repl
或 cabal repl lib:megaparsec
)并做一些事情,我得到GHC 恐慌:
λ> parseTest (string "rere" <* eof) "reri"
ghc: panic! (the 'impossible' happened)
(GHC version 7.10.1 for x86_64-unknown-linux):
Loading temp shared object failed: /tmp/ghc9380_0/libghc9380_93.so: undefined symbol: _hpc_tickboxes_megapzuEw3SHAmfXgNLpm5a31oXO6_TextziMegaparsecziError_hpc
Please report this as a GHC bug: http://www.haskell.org/ghc/reportabug
由于代码通过 cabal repl tests
编译并运行良好,我断定无论如何这不是我的编程错误,但可能是一个错误。
我找到了这张票:https://ghc.haskell.org/trac/ghc/ticket/10761,但我们的图书馆不使用模板 Haskell。
实际问题是:我应该怎么办以及如何解决这个问题?我什至不知道它是 Cabal 还是 GHC,我不知道如何构建可以重现问题的最小示例。
我已经举报了:
如果仔细阅读错误,您会发现缺少的函数与 hpc 相关:
undefined symbol: _hpc_tickboxes_megapzuEw3SHAmfXgNLpm5a31oXO6_TextziMegaparsecziError_hpc
我的猜测是 HPC(haskell 程序覆盖率)执行的检测与 GHCi 执行的 haskell 代码的交互式加载不兼容。禁用 HPC(cabal clean
后跟 cabal configure
,确保在配置时禁用覆盖)应该可以解决问题。
我建议在 GHC 错误跟踪器上报告一个错误(尽管这也可能是一个 cabal 错误,不确定是谁的错)。