2015-08-11 11 views
7

Stiamo lavorando su un fork di Parsec (con la suite di test QuickCheck completa, migliori messaggi di errore e altri miglioramenti) e alcuni progressi sono stati fatti. La maggior parte delle volte ho lavorato con REPL di Emacs, specificando il target di build tests (ovvero, ovviamente, il nome della suite di test). Questo ha funzionato bene.GHC Panic: caricamento dell'oggetto temporaneo condiviso non riuscito

Ora la nostra cosa supera i test, tutto sembra essere OK, ma se comincio REPL con l'obiettivo di libreria (o l'omissione di esso, vale a dire cabal repl o cabal repl lib:megaparsec) e fare qualcosa, ottengo GHC panico:

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

Poiché il codice viene compilato e funziona correttamente tramite cabal repl tests, concludo che questo non è il mio difetto di programmazione, ma potrebbe trattarsi di un bug.

Ho trovato questo ticket: https://ghc.haskell.org/trac/ghc/ticket/10761, ma la nostra libreria non utilizza Template Haskell.

La domanda effettiva è: cosa devo fare e come può essere risolto? Non riesco nemmeno a capire se è Cabal o GHC, non ho idea di come creare un esempio minimo che possa riprodurre il problema.


ho fatto presente che:

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

+4

Questo sembra qualche stranezza legata a 'HPC' (copertura del programma haskell). Hai provato a disattivare HPC (eseguendo 'cabal clean' e poi a configurare di nuovo, assicurandoti che' HPC' non sia abilitato?) – bennofs

+0

@bennofs, in effetti, senza l'opzione '--enable-coverage' questo non succede! Come facevi a sapere che questo è legato a HPC? Aggiungilo anche come risposta, questo può essere utile per i futuri lettori :-D Devo segnalare un errore ai manutentori di HPC o qualcosa del genere? – Mark

risposta

7

Se leggete con attenzione l'errore, si noterà che la funzione che manca è legato alla HPC:

 
undefined symbol: _hpc_tickboxes_megapzuEw3SHAmfXgNLpm5a31oXO6_TextziMegaparsecziError_hpc 

La mia ipotesi è che la strumentazione utilizzata da HPC (copertura del programma haskell) non sia compatibile con il caricamento interattivo del codice haskell eseguito da GHCi. Disabilitare l'HPC (cabal clean seguito da cabal configure, assicurandosi che la copertura sia disabilitata durante la configurazione) dovrebbe risolvere il problema.

Suggerisco di segnalare un bug sul bug tracker di GHC (anche se questo potrebbe anche essere un bug di cabala, non sono sicuro chi sia il colpevole qui).

+0

Prima proverò Cabal, dato che è su GitHub e per me è più facile interagire, inoltre penso che sia piuttosto Cabal o bug HPC di quello in GHC. Grazie, quando l'ho visto per la prima volta ho pensato di dover dormire qualche volta perché questa deve essere un'allucinazione, non può essere reale! :-D – Mark

+0

Bene, HPC fa parte di GHC – bennofs

+0

Oh, capisco. Pensavo fosse un pacchetto separato. – Mark

Problemi correlati