-
Notifications
You must be signed in to change notification settings - Fork 35
Open
Description
ghc-events currently fails to deserialize some events that it serializes. To reproduce, first generate a minimal eventlog file from the program main = return () (tried GHC 8.4), then run
import Data.Binary.Get
import Data.Binary.Put
import qualified Data.ByteString as BS
import qualified Data.ByteString.Lazy as LBS
import GHC.RTS.Events
import GHC.RTS.Events.Binary
import GHC.RTS.Events.Incremental
main = do
bs <- LBS.readFile "empty.eventlog"
let header = runGet getHeader bs
let parsers = mkEventParsers header
let event = Event
{ evTime = 415731793
, evSpec = GCStatsGHC
{ heapCapset = 0
, gen = 1
, copied = 305104
, slop = 250088
, frag = 3088384
, parNThreads = 12
, parMaxCopied = 4246
, parTotCopied = 305104
}
, evCap = Nothing
}
print (runGet (getEvent parsers) (runPut (putEvent event)))Output:
bug: Data.Binary.Get.runGet at position 60: not enough bytes
CallStack (from HasCallStack):
error, called at libraries/binary/src/Data/Binary/Get.hs:351:5 in binary-0.8.5.1:Data.Binary.Get
Mikolaj
Metadata
Metadata
Assignees
Labels
No labels