go build -race go build -race . Either would not detect race condition for the whole project (folder).
在2022年4月30日星期六 UTC+8 14:18:55<Zhaoxun Yan> 写道: > Hi Axel! > > My project is in a folder. > So actually the best way to mimic the situation is to put this file in a > folder. > And then in that folder you run: > # go build -race > Nothing happens, at least in my go1.15 > It did mention the race condition with `go run -race [filename]` > $ go run -race race.go > ================== > WARNING: DATA RACE > Read at 0x0000006489c0 by main goroutine: > main.read() > /home/zxun/src/race.go:13 +0x6d > main.main() > /home/zxun/src/race.go:24 +0x5d > > Previous write at 0x0000006489c0 by goroutine 7: > main.increase() > /home/zxun/src/race.go:9 +0x64 > main.main.func1() > /home/zxun/src/race.go:19 +0x38 > > > Goroutine 7 (running) created at: > main.main() > /home/zxun/src/race.go:17 +0x4f > ================== > 5 > Found 1 data race(s) > > Do you know the syntax to detect race condition for a whole folder of > codes, instead of one file? > Thanks. > Zhaoxun > > 在2022年4月30日星期六 UTC+8 14:05:45<axel.wa...@googlemail.com> 写道: > >> On Sat, Apr 30, 2022 at 7:49 AM Zhaoxun Yan <yan.z...@gmail.com> wrote: >> >>> Point-time race condition is undetectable by `go build race`. >>> >> >> When I run your code using `go run -race`, it reports a data race: >> >>> >>> ================== >>> WARNING: DATA RACE >>> Read at 0x0000005cb580 by main goroutine: >>> main.read() >>> /home/mero/tmp/x/x.go:15 +0xab >>> main.main() >>> /home/mero/tmp/x/x.go:26 +0x99 >> >> >>> Previous write at 0x0000005cb580 by goroutine 7: >>> main.increase() >>> /home/mero/tmp/x/x.go:11 +0x54 >>> main.main.func1() >>> /home/mero/tmp/x/x.go:21 +0x30 >>> main.main.func2() >>> /home/mero/tmp/x/x.go:24 +0x3e >> >> >>> Goroutine 7 (running) created at: >>> main.main() >>> /home/mero/tmp/x/x.go:19 +0x8e >>> ================== >>> 4 >>> Found 1 data race(s) >>> exit status 66 >> >> >> Go version is >> go version go1.18 linux/amd64 >> >> So, I don't really understand why you think the race detector can't >> detect that race. >> >> >> Thanks to Rust on emphasizing the single entrance to any variable, I >>> realized this possibility and have to add sync.Mutex to both functions. >>> >>> What is your opinion? >>> >>> Best Regards, >>> Zhaoxun >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "golang-nuts" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to golang-nuts...@googlegroups.com. >>> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/golang-nuts/5c6ae730-36a7-46ce-abb9-ea8d24da601bn%40googlegroups.com >>> >>> <https://groups.google.com/d/msgid/golang-nuts/5c6ae730-36a7-46ce-abb9-ea8d24da601bn%40googlegroups.com?utm_medium=email&utm_source=footer> >>> . >>> >> -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/97623349-0132-4fa3-b608-ff1342b02372n%40googlegroups.com.