1
0

Stop qemu if kernel panic occurs

This commit is contained in:
2018-10-06 14:00:48 +00:00
parent 6670cd544b
commit 847c934bda
2 changed files with 52 additions and 0 deletions

View File

@@ -71,6 +71,8 @@ type QemuSystem struct {
Timeout time.Duration
KilledByTimeout bool
KernelPanic bool
Died bool
sshAddrPort string
@@ -154,6 +156,19 @@ func kvmExists() bool {
return true
}
func (q *QemuSystem) panicWatcher() {
for {
time.Sleep(time.Second)
if bytes.Contains(q.Stdout, []byte("Kernel panic")) {
time.Sleep(time.Second)
// There is no reason to stay alive after kernel panic
q.Stop()
q.KernelPanic = true
return
}
}
}
// Start qemu process
func (q *QemuSystem) Start() (err error) {
rand.Seed(time.Now().UnixNano()) // Are you sure?
@@ -214,6 +229,8 @@ func (q *QemuSystem) Start() (err error) {
err = errors.New("qemu died immediately: " + string(q.Stderr))
}
go q.panicWatcher()
if q.Timeout != 0 {
go func() {
time.Sleep(q.Timeout)