Ich habe einen einfachen Test Läufer für den Fehler, der in meinem OpenPGP-Modul ist https://github.com/singpolyma/OpenPGP-Haskell/blob/master/Data/OpenPGP.hs:Warum verhält sich dieser Code bei aktivierten oder deaktivierten Optionen anders?
module Main where
import Data.OpenPGP
import Data.Binary (encode, decode)
packet = EmbeddedSignaturePacket (signaturePacket 2 168 ECDSA SHA256 [] [SignatureCreationTimePacket 1013401916,IssuerPacket "36FE856F4219F1C7"] 48065 [MPI 4,MPI 11,MPI 60,MPI 69,MPI 37,MPI 33,MPI 18,MPI 72,MPI 41,MPI 36,MPI 43,MPI 41,MPI 53,MPI 9,MPI 53,MPI 35,MPI 3,MPI 40,MPI 14,MPI 79,MPI 1,MPI 4,MPI 51,MPI 23,MPI 62,MPI 62,MPI 62,MPI 7,MPI 68,MPI 51,MPI 13,MPI 49,MPI 8,MPI 64,MPI 32,MPI 50,MPI 59,MPI 17,MPI 43,MPI 12,MPI 67,MPI 5,MPI 67,MPI 5,MPI 25,MPI 63,MPI 0,MPI 53,MPI 2,MPI 36,MPI 83,MPI 39,MPI 54,MPI 65,MPI 54,MPI 35,MPI 62,MPI 63,MPI 26,MPI 4,MPI 82,MPI 57,MPI 85,MPI 71,MPI 43,MPI 77])
main = print $ decode (encode packet) == packet
Wenn Sie diese kompilieren (auf ghc 7.4.1) mit:
ghc -O0 -fforce-recomp --make t.hs
Es funktioniert wie erwartet (das heißt, er druckt True
), aber wenn Sie wie folgt zusammenstellen:
ghc -O1 -fforce-recomp --make t.hs
oder dies:
ghc -O2 -fforce-recomp --make t.hs
Es wird False
gedruckt.
Ich verwende keine Erweiterungen (außer einer trivialen Verwendung von CPP) oder Low-Level oder unsichere Aufrufe, und das Verhalten sollte von meiner Bibliothek und keine Abhängigkeit sein, da nur mein Code hier neu kompiliert wird .
Ich kann diesen Fehler in GHC 7.4.2 reproduzieren –
Verwenden Sie binär oder Müsli, wenn Sie diesen Fehler beobachten? –