On Wed, Jun 7, 2023, 12:33 PM Sven Anderson <s...@redhat.com> wrote:

> That’s not only a read/write race, it’s also a write/write race. Every
> request to the server creates a new Go routine that might increment
> newConns in parallel, so it may get corrupted. Same for lines 39/40.
>

The write/write race will happen only if the increment is done from with
the new goroutine. If the increment is done after accepting a connection
but before starting a new goroutine there is no write/write race, right?

But that is not the problem here. Race detector is complaining about a
concurrent write after read


> You might claim, that for infrastructural reasons, there can be no
> concurrent requests to your server, but that would just mean that the race
> is not triggered, it’s there nevertheless.
>
> Caleb Spare <cesp...@gmail.com> schrieb am Mi. 7. Juni 2023 um 01:31:
>
>> Can  someone explain why the following test shows a race between the
>> indicated lines?
>>
>>
>> https://github.com/cespare/misc/blob/b2e201dfbe36504c88e521e02bc5d8fbb04a4532/httprace/httprace_test.go#L12-L43
>>
>> The race seems to be triggered by the very last line of the test:
>>
>> get(client1)
>>
>> If I comment that out, then the race detector doesn't complain. But
>> then it seems that a read of a variable which happens before an HTTP
>> request which causes a write of the variable ultimately races with the
>> original read, which doesn't make sense.
>>
>> It seems like a false positive (perhaps the race detector doesn't
>> understand causality across a TCP connection?), but so far I've never
>> seen the race detector have a false positive, so I think I must be
>> missing something.
>>
>> I wrote a slightly simpler test (see TestHTTPRace2 right below in the
>> same file) which tries to make the race happen using a regular HTTP
>> handler and a single client and the race detector doesn't complain.
>>
>> Caleb
>>
>> --
>> 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/CAGeFq%2B%3DZGE5agaLYDgsdYvykbaWwHgjtKJf9q%2B1YJhR26%3DY45Q%40mail.gmail.com
>> .
>>
>> --
> 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/CAFwXxZSzEUtf9M-b0nNYa%2B%3DiaxK%2BmfnJk%3DASKDp1kj2Cx7WqQA%40mail.gmail.com
> <https://groups.google.com/d/msgid/golang-nuts/CAFwXxZSzEUtf9M-b0nNYa%2B%3DiaxK%2BmfnJk%3DASKDp1kj2Cx7WqQA%40mail.gmail.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/CAMV2RqqXFDCFzugXXq-Q0fbTYKqZ1t5KSu06LUtEesRsbja87w%40mail.gmail.com.

Reply via email to