From b6ed1478343c98348649330e66b021faa747b6e5 Mon Sep 17 00:00:00 2001 From: Dmitry Vyukov Date: Fri, 21 Feb 2020 10:22:07 +0100 Subject: prog: dump orig prog if Deserialize panics We are seeing some one-off panics during Deserialization and it's unclear if it's machine memory corrpution or an actual bug in prog. I leam towards machine memory corruption but it's impossible to prove without seeing the orig program. Move git revision to prog and it's more base package (sys can import prog, prog can't import sys). --- prog/encoding.go | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'prog/encoding.go') diff --git a/prog/encoding.go b/prog/encoding.go index 493edd9f4..b36bf9637 100644 --- a/prog/encoding.go +++ b/prog/encoding.go @@ -204,6 +204,12 @@ const ( ) func (target *Target) Deserialize(data []byte, mode DeserializeMode) (*Prog, error) { + defer func() { + if err := recover(); err != nil { + panic(fmt.Errorf("%v\ntarget: %v/%v, rev: %v, mode=%v, prog:\n%q", + err, target.OS, target.Arch, GitRevision, mode, data)) + } + }() p := newParser(target, data, mode == Strict) prog, err := p.parseProg() if err := p.Err(); err != nil { -- cgit mrf-deployment