2015-08-11 13 views
7

Wir arbeiten an einem Fork von Parsec (mit kompletter QuickCheck Testsuite, besseren Fehlermeldungen und anderen Verbesserungen) und es wurden einige Fortschritte gemacht. Die meiste Zeit habe ich mit REPL von Emacs gearbeitet und das Build-Ziel tests angegeben (das ist offensichtlich der Name der Testsuite). Das hat gut funktioniert.GHC Panic: Geladenes Shared Objekt fehlgeschlagen

Jetzt ist unsere Sache geht, die Tests, alles scheint in Ordnung zu sein, aber wenn ich REPL mit Bibliothek Ziel starten (oder Weglassen, dh cabal repl oder cabal repl lib:megaparsec) und etwas tun, bekomme ich GHC Panik:

λ> 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 

Da der Code kompiliert und funktioniert gut über cabal repl tests, schließe ich das ist nicht mein Programmierfehler auf jeden Fall, aber möglicherweise ist es ein Fehler. Ich habe dieses Ticket gefunden: https://ghc.haskell.org/trac/ghc/ticket/10761, aber unsere Bibliothek verwendet nicht Template Haskell.

Aktuelle Frage ist: Was soll ich tun und wie kann das behoben werden? Ich kann nicht einmal sagen, ob es Cabal oder GHC ist, ich habe keine Ahnung, wie man ein minimales Beispiel baut, das das Problem reproduzieren könnte.


Ich habe es berichtet:

https://ghc.haskell.org/trac/ghc/ticket/10765#ticket

+4

Dies sieht aus wie einige Seltsamkeit in Bezug auf 'HPC' (Hakkell Programmabdeckung). Haben Sie versucht, HPC zu deaktivieren ("cabal clean" ausführen und dann erneut konfigurieren, sicherstellen, dass "HPC" nicht aktiviert ist?) – bennofs

+0

@bennofs, in der Tat, ohne '--enable-coverage' Option passiert das nicht! Woher wussten Sie, dass dies HPC-bezogen ist? Fügen Sie dies auch als Antwort hinzu, dies könnte für zukünftige Leser nützlich sein :-D Sollte ich einen Fehler an HPC-Betreuer oder etwas melden? – Mark

Antwort

7

Wenn Sie den Fehler aufmerksam zu lesen, werden Sie feststellen, dass die Funktion, die sich im Zusammenhang mit hpc fehlt:

 
undefined symbol: _hpc_tickboxes_megapzuEw3SHAmfXgNLpm5a31oXO6_TextziMegaparsecziError_hpc 

Meine Vermutung ist, dass die Instrumentierung, die HPC (Haskell Programmabdeckung) tut, nicht mit dem interaktiven Laden von Haskell-Code kompatibel ist, den GHCi tut. Die Deaktivierung von HPC (cabal clean, gefolgt von cabal configure, um sicherzustellen, dass die Abdeckung bei der Konfiguration deaktiviert ist) sollte das Problem beheben.

Ich schlage vor, einen Fehler auf dem GHC-Bug-Tracker zu melden (obwohl dies auch ein Cabal-Bug sein könnte, nicht sicher, wer hier die Schuld trägt).

+0

Ich werde zuerst versuchen Cabal, da es auf GitHub ist und es ist einfacher für mich zu interagieren, auch ich denke, es ist eher entweder Cabal oder HPC Bug als das in GHC. Danke, als ich das zum ersten Mal sah, dachte ich, dass ich manchmal schlafen muss, weil das eine Halluzination sein muss, kann es nicht wirklich sein! :-D – Mark

+0

Nun, HPC ist Teil von GHC – bennofs

+0

Oh, ich verstehe. Ich dachte, es ist ein separates Paket. – Mark