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.

Reply via email to