mirror of
https://github.com/golang/go
synced 2024-11-26 05:37:57 -07:00
test: make a race detector test robust to timing variations
The `external_cgo_thread` test in `runtime/race/output_test.go` was producing intermittent failures. The test was performing a sleep, which may not be enough depending on how long it takes to setup the callBack goroutine. Added a synchronization to make sure callBack finishes before main ends. Whether the increment to racy++ happens first in the callBack or in main doesn't matter: the race detector should flag the race regardless. The output check was changed so that the test passes regardless of which increment occurs first. Fixes #43008 Change-Id: I325ec3dea52b3725e739fbf2bd7ae92875d2de10 Reviewed-on: https://go-review.googlesource.com/c/go/+/276752 Reviewed-by: Dmitry Vyukov <dvyukov@google.com> Run-TryBot: Dmitry Vyukov <dvyukov@google.com> TryBot-Result: Go Bot <gobot@golang.org> Trust: Ian Lance Taylor <iant@golang.org>
This commit is contained in:
parent
c81343ce3a
commit
2f5b1a3974
@ -284,32 +284,31 @@ static inline void startThread(cb* c) {
|
||||
*/
|
||||
import "C"
|
||||
|
||||
import "time"
|
||||
|
||||
var done chan bool
|
||||
var racy int
|
||||
|
||||
//export goCallback
|
||||
func goCallback() {
|
||||
racy++
|
||||
done <- true
|
||||
}
|
||||
|
||||
func main() {
|
||||
done = make(chan bool)
|
||||
var c C.cb
|
||||
C.startThread(&c)
|
||||
time.Sleep(time.Second)
|
||||
racy++
|
||||
<- done
|
||||
}
|
||||
`, `==================
|
||||
WARNING: DATA RACE
|
||||
Read at 0x[0-9,a-f]+ by main goroutine:
|
||||
main\.main\(\)
|
||||
.*/main\.go:34 \+0x[0-9,a-f]+
|
||||
Read at 0x[0-9,a-f]+ by .*:
|
||||
main\..*
|
||||
.*/main\.go:[0-9]+ \+0x[0-9,a-f]+(?s).*
|
||||
|
||||
Previous write at 0x[0-9,a-f]+ by goroutine [0-9]:
|
||||
main\.goCallback\(\)
|
||||
.*/main\.go:27 \+0x[0-9,a-f]+
|
||||
_cgoexp_[0-9a-z]+_goCallback\(\)
|
||||
.*_cgo_gotypes\.go:[0-9]+ \+0x[0-9,a-f]+
|
||||
Previous write at 0x[0-9,a-f]+ by .*:
|
||||
main\..*
|
||||
.*/main\.go:[0-9]+ \+0x[0-9,a-f]+(?s).*
|
||||
|
||||
Goroutine [0-9] \(running\) created at:
|
||||
runtime\.newextram\(\)
|
||||
|
Loading…
Reference in New Issue
Block a user