aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2019-05-20 18:53:12 +0200
committerDmitry Vyukov <dvyukov@google.com>2019-05-20 19:40:20 +0200
commit32ebe81cf3e222b41b03b774ce59bee2e7ec923f (patch)
treeae20bdad248b6946682738a3869c4e898e4e6bc8
parent2c9280d432039ad490051c3e1ba130ee268057a6 (diff)
pkg/repro: fix no output timeout
We duplicated the no output timeout in the repro package, and it got out of sync. It's not 3 mins now, but 5 mins. Remove the duplication and fix this.
-rw-r--r--pkg/repro/repro.go6
-rw-r--r--vm/vm.go4
-rw-r--r--vm/vm_test.go2
3 files changed, 6 insertions, 6 deletions
diff --git a/pkg/repro/repro.go b/pkg/repro/repro.go
index 61793ac76..b3b8d739c 100644
--- a/pkg/repro/repro.go
+++ b/pkg/repro/repro.go
@@ -254,9 +254,9 @@ func (ctx *context) extractProg(entries []*prog.LogEntry) (*Result, error) {
}
// The shortest duration is 10 seconds to detect simple crashes (i.e. no races and no hangs).
- // The longest duration is 5 minutes to catch races and hangs. Note that this value must be larger
- // than hang/no output detection duration in vm.MonitorExecution, which is currently set to 3 mins.
- timeouts := []time.Duration{10 * time.Second, 1 * time.Minute, 5 * time.Minute}
+ // The longest duration is 6 minutes to catch races and hangs. Note that this value must be larger
+ // than hang/no output detection duration in vm.MonitorExecution, which is currently set to 5 mins.
+ timeouts := []time.Duration{10 * time.Second, 1 * time.Minute, vm.NoOutputTimeout + time.Minute}
for _, timeout := range timeouts {
// Execute each program separately to detect simple crashes caused by a single program.
diff --git a/vm/vm.go b/vm/vm.go
index 3e6ee0cd7..28eddeef0 100644
--- a/vm/vm.go
+++ b/vm/vm.go
@@ -225,7 +225,7 @@ func (inst *Instance) MonitorExecution(outc <-chan []byte, errc <-chan error,
// in 140-280s detection delay.
// So the current timeout is 5 mins (300s).
// We don't want it to be too long too because it will waste time on real hangs.
- if time.Since(lastExecuteTime) < noOutputTimeout {
+ if time.Since(lastExecuteTime) < NoOutputTimeout {
break
}
diag, wait := inst.Diagnose()
@@ -347,7 +347,7 @@ var (
beforeContext = 1024 << 10
afterContext = 128 << 10
+ NoOutputTimeout = 5 * time.Minute
tickerPeriod = 10 * time.Second
- noOutputTimeout = 5 * time.Minute
waitForOutputTimeout = 10 * time.Second
)
diff --git a/vm/vm_test.go b/vm/vm_test.go
index 702e2626e..e55cf2184 100644
--- a/vm/vm_test.go
+++ b/vm/vm_test.go
@@ -72,7 +72,7 @@ func (inst *testInstance) Close() {
func init() {
beforeContext = 200
tickerPeriod = 1 * time.Second
- noOutputTimeout = 5 * time.Second
+ NoOutputTimeout = 5 * time.Second
waitForOutputTimeout = 3 * time.Second
ctor := func(env *vmimpl.Env) (vmimpl.Pool, error) {