google / google/cadvisor

Data race in containerData.GetInfo()

Open
#3,735 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Go
Stars
19.4k
Forks
2.5k
Avg merge
9h 7m
Merged PRs (30d)
1

Description

I guess it should lock the mutex.

```
I0929 15:14:27.616155 84079 cadvisor.go:179] Starting cAdvisor version: v0.53.0.4+5adb1c3bb38b4c-5adb1c3b on port 8080
==================
WARNING: DATA RACE
Read at 0x00c0004d3a50 by goroutine 221:
github.com/google/cadvisor/manager.(*containerData).GetInfo()
/home/ec2-user/src/github.com/google/cadvisor/manager/container.go:175 +0x7b
github.com/google/cadvisor/manager.(*manager).containerDataToContainerInfo()
/home/ec2-user/src/github.com/google/cadvisor/manager/manager.go:545 +0x56
github.com/google/cadvisor/manager.(*manager).containerDataSliceToContainerInfoSlice()
/home/ec2-user/src/github.com/google/cadvisor/manager/manager.go:674 +0x137
github.com/google/cadvisor/manager.(*manager).SubcontainersInfo()
/home/ec2-user/src/github.com/google/cadvisor/manager/manager.go:601 +0x266
github.com/google/cadvisor/cmd/internal/api.(*version1_1).HandleRequest()
/home/ec2-user/src/github.com/google/cadvisor/cmd/internal/api/versions.go:162 +0x256
github.com/google/cadvisor/cmd/internal/api.handleRequest()
/home/ec2-user/src/github.com/google/cadvisor/cmd/internal/api/handler.go:121 +0x4eb
github.com/google/cadvisor/cmd/internal/api.RegisterHandlers.func1()
/home/ec2-user/src/github.com/google/cadvisor/cmd/internal/api/handler.go:51 +0x68
net/http.HandlerFunc.ServeHTTP()
/usr/local/go/src/net/http/server.go:2322 +0x47
net/http.(*ServeMux).ServeHTTP()
/usr/local/go/src/net/http/server.go:2861 +0x242
net/http.(*ServeMux).ServeHTTP()
/usr/local/go/src/net/http/server.go:2861 +0x242
net/http.serverHandler.ServeHTTP()
/usr/local/go/src/net/http/server.go:3340 +0x2a1
net/http.(*conn).serve()
/usr/local/go/src/net/http/server.go:2109 +0xda4
net/http.(*Server).Serve.gowrap3()
/usr/local/go/src/net/http/server.go:3493 +0x4f

Previous write at 0x00c0004d3a50 by goroutine 222:
github.com/google/cadvisor/manager.(*containerData).GetInfo()
/home/ec2-user/src/github.com/google/cadvisor/manager/container.go:186 +0x195
github.com/google/cadvisor/manager.(*manager).containerDataToContainerInfo()
/home/ec2-user/src/github.com/google/cadvisor/manager/manager.go:545 +0x56
github.com/google/cadvisor/manager.(*manager).GetContainerInfo()
/home/ec2-user/src/github.com/google/cadvisor/manager/manager.go:506 +0x7c
github.com/google/cadvisor/cmd/internal/api.(*version1_0).HandleRequest()
/home/ec2-user/src/github.com/google/cadvisor/cmd/internal/api/versions.go:112 +0x35e
github.com/google/cadvisor/cmd/internal/api.handleRequest()
/home/ec2-user/src/github.com/google/cadvisor/cmd/internal/api/handler.go:121 +0x4eb
github.com/google/cadvisor/cmd/internal/api.RegisterHandlers.func1()
/home/ec2-user/src/github.com/google/cadvisor/cmd/internal/api/handler.go:51 +0x68
net/http.HandlerFunc.ServeHTTP()
/usr/local/go/src/net/http/server.go:2322 +0x47
net/http.(*ServeMux).ServeHTTP()
/usr/local/go/src/net/http/server.go:2861 +0x242
net/http.(*ServeMux).ServeHTTP()
/usr/local/go/src/net/http/server.go:2861 +0x242
net/http.serverHandler.ServeHTTP()
/usr/local/go/src/net/http/server.go:3340 +0x2a1
net/http.(*conn).serve()
/usr/local/go/src/net/http/server.go:2109 +0xda4
net/http.(*Server).Serve.gowrap3()
/usr/local/go/src/net/http/server.go:3493 +0x4f

Goroutine 221 (running) created at:
net/http.(*Server).Serve()
/usr/local/go/src/net/http/server.go:3493 +0x889
net/http.(*Server).ListenAndServe()
/usr/local/go/src/net/http/server.go:3389 +0xb3
net/http.ListenAndServe()
/usr/local/go/src/net/http/server.go:3704 +0x188c
main.main()
/home/ec2-user/src/github.com/google/cadvisor/cmd/cadvisor.go:185 +0x189d
github.com/google/cadvisor/container.InitializePlugins()
/home/ec2-user/src/github.com/google/cadvisor/container/factory.go:219 +0x29a
github.com/google/cadvisor/manager.(*manager).Start()
/home/ec2-user/src/github.com/google/cadvisor/manager/manager.go:290 +0xb9
main.main()
/home/ec2-user/src/github.com/google/cadvisor/cmd/cadvisor.go:172 +0x1048

Goroutine 222 (running) created at:
net/http.(*Server).Serve()
/usr/local/go/src/net/http/server.go:3493 +0x889
net/http.(*Server).ListenAndServe()
/usr/local/go/src/net/http/server.go:3389 +0xb3
net/http.ListenAndServe()
/usr/local/go/src/net/http/server.go:3704 +0x188c
main.main()
/home/ec2-user/src/github.com/google/cadvisor/cmd/cadvisor.go:185 +0x189d
github.com/google/cadvisor/container.InitializePlugins()
/home/ec2-user/src/github.com/google/cadvisor/container/factory.go:219 +0x29a
github.com/google/cadvisor/manager.(*manager).Start()
/home/ec2-user/src/github.com/google/cadvisor/manager/manager.go:290 +0xb9
main.main()
/home/ec2-user/src/github.com/google/cadvisor/cmd/cadvisor.go:172 +0x1048
==================
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.