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.

Reply via email to