Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code | Sign in
(57)

Issue 6817086: syscall: fix data races in LazyDLL/LazyProc

Can't Edit
Can't Publish+Mail
Start Review
Created:
13 years ago by dvyukov2
Modified:
12 years, 12 months ago
Reviewers:
brainman
Visibility:
Public.

Description

syscall: fix data races in LazyDLL/LazyProc

Patch Set 1 #

Patch Set 2 : diff -r 126c37a9e33c https://go.googlecode.com/hg/ #

Total comments: 2
Unified diffs Side-by-side diffs Delta from patch set Stats (+6 lines, -4 lines) Patch
M src/pkg/syscall/dll_windows.go View 1 5 chunks +6 lines, -4 lines 2 comments Download

Messages

Total messages: 6
brainman
LGTM It is "ugly", as you said, but most sensible in the circumstances. Thank you. ...
12 years, 12 months ago (2012-11-07 03:50:03 UTC) #1
brainman
I just applied https://codereview.appspot.com/6810080/ to test this change and it still fails in a similar ...
12 years, 12 months ago (2012-11-07 05:04:47 UTC) #2
dvyukov2
On 2012/11/07 05:04:47, brainman wrote: > I just applied https://codereview.appspot.com/6810080/ to test this change and ...
12 years, 12 months ago (2012-11-07 05:27:25 UTC) #3
brainman
On 2012/11/07 05:27:25, dvyukov2 wrote: > > How exactly does it fail? ... c:\MinGW64\go\src\pkg\debug\pe>go test ...
12 years, 12 months ago (2012-11-07 05:31:54 UTC) #4
dvyukov2
On 2012/11/07 05:31:54, brainman wrote: > On 2012/11/07 05:27:25, dvyukov2 wrote: > > > > ...
12 years, 12 months ago (2012-11-07 09:12:09 UTC) #5
brainman
12 years, 12 months ago (2012-11-08 03:45:14 UTC) #6
Testing hg id 7fac8ec2f901 now that you've submitted your race facility, I can reliably break compress/lzw and net tests: c:\MinGW64\go\src>go test -race -short compress/lzw ================== WARNING: DATA RACE Write by goroutine 3: syscall.(*LazyProc).Find() c:/mingw64/go/src/pkg/syscall/dll_windows.go:232 +0x194 syscall.(*LazyProc).mustFind() c:/mingw64/go/src/pkg/syscall/dll_windows.go:240 +0x35 syscall.(*LazyProc).Addr() c:/mingw64/go/src/pkg/syscall/dll_windows.go:249 +0x35 syscall.ReadFile() c:/mingw64/go/src/pkg/syscall/zsyscall_windows_amd64.go:263 +0xba syscall.Read() c:/mingw64/go/src/pkg/syscall/syscall_windows.go:263 +0xb4 os.(*File).read() c:/mingw64/go/src/pkg/os/file_windows.go:216 +0xfb os.(*File).Read() c:/mingw64/go/src/pkg/os/file.go:95 +0xd2 bytes.(*Buffer).ReadFrom() c:/mingw64/go/src/pkg/bytes/buffer.go:166 +0x4ba io/ioutil.readAll() c:/mingw64/go/src/pkg/io/ioutil/ioutil.go:32 +0x1c6 io/ioutil.ReadAll() c:/mingw64/go/src/pkg/io/ioutil/ioutil.go:41 +0x4d compress/lzw.testFile() c:/mingw64/go/src/pkg/compress/lzw/writer_test.go:66 +0x6a8 compress/lzw.TestWriter() c:/mingw64/go/src/pkg/compress/lzw/writer_test.go:93 +0x216 testing.tRunner() c:/mingw64/go/src/pkg/testing/testing.go:301 +0x92 Previous read by goroutine 4: syscall.(*LazyProc).Find() c:/mingw64/go/src/pkg/syscall/dll_windows.go:220 +0x4d syscall.(*LazyProc).mustFind() c:/mingw64/go/src/pkg/syscall/dll_windows.go:240 +0x35 syscall.(*LazyProc).Addr() c:/mingw64/go/src/pkg/syscall/dll_windows.go:249 +0x35 syscall.ReadFile() c:/mingw64/go/src/pkg/syscall/zsyscall_windows_amd64.go:263 +0xba syscall.Read() c:/mingw64/go/src/pkg/syscall/syscall_windows.go:263 +0xb4 os.(*File).read() c:/mingw64/go/src/pkg/os/file_windows.go:216 +0xfb os.(*File).Read() c:/mingw64/go/src/pkg/os/file.go:95 +0xd2 compress/lzw.func·001() c:/mingw64/go/src/pkg/compress/lzw/writer_test.go:47 +0x1f4 Goroutine 3 (running) created at: testing.RunTests() c:/mingw64/go/src/pkg/testing/testing.go:377 +0xb0c testing.Main() c:/mingw64/go/src/pkg/testing/testing.go:313 +0xd0 main.main() C:/Users/brainman/AppData/Local/Temp/go-build238292983/compress/lzw/_test/_testmain.go:59 +0xdd runtime.main() c:/mingw64/go/src/pkg/runtime/proc.c:248 +0x94 Goroutine 4 (running) created at: compress/lzw.testFile() c:/mingw64/go/src/pkg/compress/lzw/writer_test.go:61 +0x5b6 compress/lzw.TestWriter() c:/mingw64/go/src/pkg/compress/lzw/writer_test.go:93 +0x216 testing.tRunner() c:/mingw64/go/src/pkg/testing/testing.go:301 +0x92 ================== ================== WARNING: DATA RACE Write by goroutine 3: syscall.(*LazyProc).Find() c:/mingw64/go/src/pkg/syscall/dll_windows.go:232 +0x194 syscall.(*LazyProc).mustFind() c:/mingw64/go/src/pkg/syscall/dll_windows.go:240 +0x35 syscall.(*LazyProc).Addr() c:/mingw64/go/src/pkg/syscall/dll_windows.go:249 +0x35 syscall.CloseHandle() c:/mingw64/go/src/pkg/syscall/zsyscall_windows_amd64.go:304 +0x5b os.(*file).close() c:/mingw64/go/src/pkg/os/file_windows.go:147 +0x230 os.(*File).Close() c:/mingw64/go/src/pkg/os/file_windows.go:136 +0x46 compress/lzw.testFile() c:/mingw64/go/src/pkg/compress/lzw/writer_test.go:26 +0x2c0 compress/lzw.TestWriter() c:/mingw64/go/src/pkg/compress/lzw/writer_test.go:93 +0x216 testing.tRunner() c:/mingw64/go/src/pkg/testing/testing.go:301 +0x92 Previous read by goroutine 4: syscall.(*LazyProc).Find() c:/mingw64/go/src/pkg/syscall/dll_windows.go:220 +0x4d syscall.(*LazyProc).mustFind() c:/mingw64/go/src/pkg/syscall/dll_windows.go:240 +0x35 syscall.(*LazyProc).Addr() c:/mingw64/go/src/pkg/syscall/dll_windows.go:249 +0x35 syscall.CloseHandle() c:/mingw64/go/src/pkg/syscall/zsyscall_windows_amd64.go:304 +0x5b os.(*file).close() c:/mingw64/go/src/pkg/os/file_windows.go:147 +0x230 os.(*File).Close() c:/mingw64/go/src/pkg/os/file_windows.go:136 +0x46 compress/lzw.func·001() c:/mingw64/go/src/pkg/compress/lzw/writer_test.go:54 +0x4b0 Goroutine 3 (running) created at: testing.RunTests() c:/mingw64/go/src/pkg/testing/testing.go:377 +0xb0c testing.Main() c:/mingw64/go/src/pkg/testing/testing.go:313 +0xd0 main.main() C:/Users/brainman/AppData/Local/Temp/go-build238292983/compress/lzw/_test/_testmain.go:59 +0xdd runtime.main() c:/mingw64/go/src/pkg/runtime/proc.c:248 +0x94 Goroutine 4 (running) created at: compress/lzw.testFile() c:/mingw64/go/src/pkg/compress/lzw/writer_test.go:61 +0x5b6 compress/lzw.TestWriter() c:/mingw64/go/src/pkg/compress/lzw/writer_test.go:93 +0x216 testing.tRunner() c:/mingw64/go/src/pkg/testing/testing.go:301 +0x92 ================== PASS Found 2 data race(s) FAIL compress/lzw 2.592s c:\MinGW64\go\src>go test -race -short net ================== WARNING: DATA RACE Write by goroutine 45: syscall.(*LazyProc).Find() c:/mingw64/go/src/pkg/syscall/dll_windows.go:232 +0x194 syscall.(*LazyProc).mustFind() c:/mingw64/go/src/pkg/syscall/dll_windows.go:240 +0x35 syscall.(*LazyProc).Addr() c:/mingw64/go/src/pkg/syscall/dll_windows.go:249 +0x35 syscall.WSARecv() c:/mingw64/go/src/pkg/syscall/zsyscall_windows_amd64.go:1412 +0x66 net.(*readOp).Submit() c:/mingw64/go/src/pkg/net/fd_windows.go:404 +0xdc net.(*ioSrv).ExecIO() c:/mingw64/go/src/pkg/net/fd_windows.go:173 +0xbb net.(*netFD).Read() c:/mingw64/go/src/pkg/net/fd_windows.go:420 +0x1d9 net.(*conn).Read() c:/mingw64/go/src/pkg/net/net_posix.go:30 +0x115 net.TestShutdown() c:/mingw64/go/src/pkg/net/net_test.go:53 +0x58c testing.tRunner() c:/mingw64/go/src/pkg/testing/testing.go:301 +0x92 Previous read by goroutine 46: syscall.(*LazyProc).Find() c:/mingw64/go/src/pkg/syscall/dll_windows.go:220 +0x4d syscall.(*LazyProc).mustFind() c:/mingw64/go/src/pkg/syscall/dll_windows.go:240 +0x35 syscall.(*LazyProc).Addr() c:/mingw64/go/src/pkg/syscall/dll_windows.go:249 +0x35 syscall.WSARecv() c:/mingw64/go/src/pkg/syscall/zsyscall_windows_amd64.go:1412 +0x66 net.(*readOp).Submit() c:/mingw64/go/src/pkg/net/fd_windows.go:404 +0xdc net.(*ioSrv).ExecIO() c:/mingw64/go/src/pkg/net/fd_windows.go:173 +0xbb net.(*netFD).Read() c:/mingw64/go/src/pkg/net/fd_windows.go:420 +0x1d9 net.(*conn).Read() c:/mingw64/go/src/pkg/net/net_posix.go:30 +0x115 net.func·021() c:/mingw64/go/src/pkg/net/net_test.go:34 +0x1df Goroutine 45 (running) created at: testing.RunTests() c:/mingw64/go/src/pkg/testing/testing.go:377 +0xb0c testing.Main() c:/mingw64/go/src/pkg/testing/testing.go:313 +0xd0 main.main() C:/Users/brainman/AppData/Local/Temp/go-build123861631/net/_test/_testmain.go:189 +0xdd runtime.main() c:/mingw64/go/src/pkg/runtime/proc.c:248 +0x94 Goroutine 46 (running) created at: net.TestShutdown() c:/mingw64/go/src/pkg/net/net_test.go:40 +0x24e testing.tRunner() c:/mingw64/go/src/pkg/testing/testing.go:301 +0x92 ================== PASS Found 1 data race(s) FAIL net 1.423s but after applying CL6817086, these failures disapper. So, I would say LGTM. Please, add "Fixes issue 4343" to CL description. Also, you, probably, want to redo this CL, because you've sent it as d...@gmail.com, so it does not find your in CONTRIBUTORS file. Alex
Sign in to reply to this message.

Powered by Google App Engine
RSS Feeds Recent Issues | This issue
This is Rietveld f62528b