Tôi có một người chạy thử nghiệm đơn giản cho các lỗi mà là ở mô-đun OpenPGP tôi https://github.com/singpolyma/OpenPGP-Haskell/blob/master/Data/OpenPGP.hs:Tại sao mã này hoạt động khác với các tùy chọn bật hoặc tắt?
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
Nếu bạn biên dịch này (trên GHC 7.4.1) với:
ghc -O0 -fforce-recomp --make t.hs
Nó hoạt động như mong đợi (có nghĩa là, nó in True
), nhưng nếu bạn biên dịch như thế này:
ghc -O1 -fforce-recomp --make t.hs
hay này:
ghc -O2 -fforce-recomp --make t.hs
Nó sẽ in False
.
Tôi không sử dụng bất kỳ tiện ích mở rộng nào (ngoại trừ việc sử dụng CPP nhỏ) hoặc cuộc gọi cấp thấp hoặc không an toàn và hành vi phải từ thư viện của tôi chứ không phải phụ thuộc, vì chỉ có mã của tôi được biên dịch lại ở đây .
Tôi có thể tạo lại lỗi này trong GHC 7.4.2 –
Bạn đang sử dụng nhị phân hoặc ngũ cốc khi bạn quan sát lỗi này? –