Try capturing panics

This commit is contained in:
Audrius Butkevicius 2015-04-09 11:49:02 +01:00
parent e41e58e781
commit 0cb7ed9e4e
1 changed files with 13 additions and 1 deletions

View File

@ -118,11 +118,18 @@ func (p *syncthingProcess) stop() error {
raceConditionStart := []byte("WARNING: DATA RACE")
raceConditionSep := []byte("==================")
panicConditionStart := []byte("panic:")
panicConditionSep := []byte(p.id.String()[:5])
sc := bufio.NewScanner(fd)
race := false
_panic := false
for sc.Scan() {
line := sc.Bytes()
if race {
if race || _panic {
if bytes.Contains(line, panicConditionSep) {
_panic = false
continue
}
fmt.Printf("%s\n", line)
if bytes.Contains(line, raceConditionSep) {
race = false
@ -134,6 +141,11 @@ func (p *syncthingProcess) stop() error {
if err == nil {
err = errors.New("Race condition detected")
}
} else if bytes.Contains(line, panicConditionStart) {
_panic = true
if err == nil {
err = errors.New("Panic detected")
}
}
}
return err