Skip to content

DATA RACE: (*Daemon).SystemInfo() vs (*Daemon).ContainerRm() #26666

Description

@AkihiroSuda

Description

Steps to reproduce the issue:

  1. BUILDFLAGS=-race make binary
  2. Execute docker info repeatedly
  3. Simultaneously, execute docker build -t tmp1 . && docker rmi tmp1 repeatedly. The content of Dockerfile is arbitrary, but just FROM busybox is enough.

Describe the results you received:

Sep 17 12:40:06 ws01 dockerd[30160]: WARNING: DATA RACE
Sep 17 12:40:06 ws01 dockerd[30160]: Write at 0x00c4203dc77c by goroutine 177:
Sep 17 12:40:06 ws01 dockerd[30160]:   github.com/docker/docker/container.(*State).ResetRemovalInProgress()
Sep 17 12:40:06 ws01 dockerd[30160]:       /go/src/github.com/docker/docker/container/state.go:325 +0x4c
Sep 17 12:40:06 ws01 dockerd[30160]:   github.com/docker/docker/daemon.(*Daemon).ContainerRm()
Sep 17 12:40:06 ws01 dockerd[30160]:       /go/src/github.com/docker/docker/daemon/delete.go:42 +0x260
Sep 17 12:40:06 ws01 dockerd[30160]:   github.com/docker/docker/builder/dockerfile.(*Builder).removeContainer()
Sep 17 12:40:06 ws01 dockerd[30160]:       /go/src/github.com/docker/docker/builder/dockerfile/internals.go:571 +0x103
Sep 17 12:40:06 ws01 dockerd[30160]:   github.com/docker/docker/builder/dockerfile.(*Builder).clearTmp()
Sep 17 12:40:06 ws01 dockerd[30160]:       /go/src/github.com/docker/docker/builder/dockerfile/internals.go:580 +0x10b
Sep 17 12:40:06 ws01 dockerd[30160]:   github.com/docker/docker/builder/dockerfile.(*Builder).build()
Sep 17 12:40:06 ws01 dockerd[30160]:       /go/src/github.com/docker/docker/builder/dockerfile/builder.go:256 +0x5a1
Sep 17 12:40:06 ws01 dockerd[30160]:   github.com/docker/docker/builder/dockerfile.(*BuildManager).BuildFromContext()
Sep 17 12:40:06 ws01 dockerd[30160]:       /go/src/github.com/docker/docker/builder/dockerfile/builder.go:108 +0x2e8
Sep 17 12:40:06 ws01 dockerd[30160]:   github.com/docker/docker/api/server/router/build.(*buildRouter).postBuild()
Sep 17 12:40:06 ws01 dockerd[30160]:       /go/src/github.com/docker/docker/api/server/router/build/build_routes.go:181 +0xc50
Sep 17 12:40:06 ws01 dockerd[30160]:   github.com/docker/docker/api/server/router/build.(*buildRouter).(github.com/docker/docker/api/server/router/build.postBuild)-fm()
Sep 17 12:40:06 ws01 dockerd[30160]:       /go/src/github.com/docker/docker/api/server/router/build/build.go:27 +0x8a
Sep 17 12:40:06 ws01 dockerd[30160]:   github.com/docker/docker/api/server/router.cancellableHandler.func1()
Sep 17 12:40:06 ws01 dockerd[30160]:       /go/src/github.com/docker/docker/api/server/router/local.go:84 +0x124
Sep 17 12:40:06 ws01 dockerd[30160]:   github.com/docker/docker/api/server/middleware.VersionMiddleware.WrapHandler.func1()
Sep 17 12:40:06 ws01 dockerd[30160]:       /go/src/github.com/docker/docker/api/server/middleware/version.go:56 +0x952
Sep 17 12:40:06 ws01 dockerd[30160]:   github.com/docker/docker/api/server/middleware.UserAgentMiddleware.WrapHandler.func1()
Sep 17 12:40:06 ws01 dockerd[30160]:       /go/src/github.com/docker/docker/api/server/middleware/user_agent.go:45 +0x307
Sep 17 12:40:06 ws01 dockerd[30160]:   github.com/docker/docker/pkg/authorization.(*Middleware).WrapHandler.func1()
Sep 17 12:40:06 ws01 dockerd[30160]:       /go/src/github.com/docker/docker/pkg/authorization/middleware.go:34 +0xe5
Sep 17 12:40:06 ws01 dockerd[30160]:   github.com/docker/docker/api/server/middleware.DebugRequestMiddleware.func1()
Sep 17 12:40:06 ws01 dockerd[30160]:       /go/src/github.com/docker/docker/api/server/middleware/debug.go:25 +0x346
Sep 17 12:40:06 ws01 dockerd[30160]:   github.com/docker/docker/api/server.(*Server).makeHTTPHandler.func1()
Sep 17 12:40:06 ws01 dockerd[30160]:       /go/src/github.com/docker/docker/api/server/server.go:139 +0x11e
Sep 17 12:40:06 ws01 dockerd[30160]:   net/http.HandlerFunc.ServeHTTP()
Sep 17 12:40:06 ws01 dockerd[30160]:       /usr/local/go/src/net/http/server.go:1726 +0x51
Sep 17 12:40:06 ws01 dockerd[30160]:   github.com/gorilla/mux.(*Router).ServeHTTP()
Sep 17 12:40:06 ws01 dockerd[30160]:       /go/src/github.com/docker/docker/vendor/src/github.com/gorilla/mux/mux.go:103 +0x358
Sep 17 12:40:06 ws01 dockerd[30160]:   github.com/docker/docker/api/server.(*routerSwapper).ServeHTTP()
Sep 17 12:40:06 ws01 dockerd[30160]:       /go/src/github.com/docker/docker/api/server/router_swapper.go:29 +0x93
Sep 17 12:40:06 ws01 dockerd[30160]:   net/http.serverHandler.ServeHTTP()
Sep 17 12:40:06 ws01 dockerd[30160]:       /usr/local/go/src/net/http/server.go:2202 +0xbb
Sep 17 12:40:06 ws01 dockerd[30160]:   net/http.(*conn).serve()
Sep 17 12:40:06 ws01 dockerd[30160]:       /usr/local/go/src/net/http/server.go:1579 +0x5f6
Sep 17 12:40:06 ws01 dockerd[30160]: Previous read at 0x00c4203dc77c by goroutine 41:
Sep 17 12:40:06 ws01 dockerd[30160]:   github.com/docker/docker/daemon.(*Daemon).SystemInfo.func1()
Sep 17 12:40:06 ws01 dockerd[30160]:       /go/src/github.com/docker/docker/daemon/info.go:61 +0x1e5
Sep 17 12:40:06 ws01 dockerd[30160]:   github.com/docker/docker/container.(*memoryStore).ApplyAll.func1()
Sep 17 12:40:06 ws01 dockerd[30160]:       /go/src/github.com/docker/docker/container/memory_store.go:74 +0x3d
Sep 17 12:40:06 ws01 dockerd[30160]: Goroutine 177 (running) created at:
Sep 17 12:40:06 ws01 dockerd[30160]:   net/http.(*Server).Serve()
Sep 17 12:40:06 ws01 dockerd[30160]:       /usr/local/go/src/net/http/server.go:2293 +0x540
Sep 17 12:40:06 ws01 dockerd[30160]:   github.com/docker/docker/api/server.(*HTTPServer).Serve()
Sep 17 12:40:06 ws01 dockerd[30160]:       /go/src/github.com/docker/docker/api/server/server.go:114 +0x74
Sep 17 12:40:06 ws01 dockerd[30160]:   github.com/docker/docker/api/server.(*Server).serveAPI.func1()
Sep 17 12:40:06 ws01 dockerd[30160]:       /go/src/github.com/docker/docker/api/server/server.go:87 +0x106
Sep 17 12:40:06 ws01 dockerd[30160]: Goroutine 41 (finished) created at:
Sep 17 12:40:06 ws01 dockerd[30160]:   github.com/docker/docker/container.(*memoryStore).ApplyAll()
Sep 17 12:40:06 ws01 dockerd[30160]:       /go/src/github.com/docker/docker/container/memory_store.go:76 +0xe0
Sep 17 12:40:06 ws01 dockerd[30160]:   github.com/docker/docker/daemon.(*Daemon).SystemInfo()
Sep 17 12:40:06 ws01 dockerd[30160]:       /go/src/github.com/docker/docker/daemon/info.go:69 +0x3b3
Sep 17 12:40:06 ws01 dockerd[30160]:   github.com/docker/docker/api/server/router/system.(*systemRouter).getInfo()
Sep 17 12:40:06 ws01 dockerd[30160]:       /go/src/github.com/docker/docker/api/server/router/system/system_routes.go:33 +0x6f
Sep 17 12:40:06 ws01 dockerd[30160]:   github.com/docker/docker/api/server/router/system.(*systemRouter).(github.com/docker/docker/api/server/router/system.getInfo)-fm()
Sep 17 12:40:06 ws01 dockerd[30160]:       /go/src/github.com/docker/docker/api/server/router/system/system.go:27 +0x8a
Sep 17 12:40:06 ws01 dockerd[30160]:   github.com/docker/docker/api/server/middleware.VersionMiddleware.WrapHandler.func1()
Sep 17 12:40:06 ws01 dockerd[30160]:       /go/src/github.com/docker/docker/api/server/middleware/version.go:56 +0x952
Sep 17 12:40:06 ws01 dockerd[30160]:   github.com/docker/docker/api/server/middleware.UserAgentMiddleware.WrapHandler.func1()
Sep 17 12:40:06 ws01 dockerd[30160]:       /go/src/github.com/docker/docker/api/server/middleware/user_agent.go:45 +0x307
Sep 17 12:40:06 ws01 dockerd[30160]:   github.com/docker/docker/pkg/authorization.(*Middleware).WrapHandler.func1()
Sep 17 12:40:06 ws01 dockerd[30160]:       /go/src/github.com/docker/docker/pkg/authorization/middleware.go:34 +0xe5
Sep 17 12:40:06 ws01 dockerd[30160]:   github.com/docker/docker/api/server/middleware.DebugRequestMiddleware.func1()
Sep 17 12:40:06 ws01 dockerd[30160]:       /go/src/github.com/docker/docker/api/server/middleware/debug.go:22 +0x248
Sep 17 12:40:06 ws01 dockerd[30160]:   github.com/docker/docker/api/server.(*Server).makeHTTPHandler.func1()
Sep 17 12:40:06 ws01 dockerd[30160]:       /go/src/github.com/docker/docker/api/server/server.go:139 +0x11e
Sep 17 12:40:06 ws01 dockerd[30160]:   net/http.HandlerFunc.ServeHTTP()
Sep 17 12:40:06 ws01 dockerd[30160]:       /usr/local/go/src/net/http/server.go:1726 +0x51
Sep 17 12:40:06 ws01 dockerd[30160]:   github.com/gorilla/mux.(*Router).ServeHTTP()
Sep 17 12:40:06 ws01 dockerd[30160]:       /go/src/github.com/docker/docker/vendor/src/github.com/gorilla/mux/mux.go:103 +0x358
Sep 17 12:40:06 ws01 dockerd[30160]:   github.com/docker/docker/api/server.(*routerSwapper).ServeHTTP()
Sep 17 12:40:06 ws01 dockerd[30160]:       /go/src/github.com/docker/docker/api/server/router_swapper.go:29 +0x93
Sep 17 12:40:06 ws01 dockerd[30160]:   net/http.serverHandler.ServeHTTP()
Sep 17 12:40:06 ws01 dockerd[30160]:       /usr/local/go/src/net/http/server.go:2202 +0xbb
Sep 17 12:40:06 ws01 dockerd[30160]:   net/http.(*conn).serve()
Sep 17 12:40:06 ws01 dockerd[30160]:       /usr/local/go/src/net/http/server.go:1579 +0x5f6
Sep 17 12:40:06 ws01 dockerd[30160]: ==================

Describe the results you expected:
There should not be any race

Output of docker version:

Client:
 Version:      1.13.0-dev
 API version:  1.25
 Go version:   go1.7.1
 Git commit:   6d8598f
 Built:        Sat Sep 17 12:33:03 2016
 OS/Arch:      linux/amd64
 Experimental: true

Server:
 Version:      1.13.0-dev
 API version:  1.25
 Go version:   go1.7.1
 Git commit:   6d8598f
 Built:        Sat Sep 17 12:33:03 2016
 OS/Arch:      linux/amd64
 Experimental: true

Output of docker info:

Containers: 2
 Running: 1
 Paused: 0
 Stopped: 1
Images: 55
Server Version: 1.13.0-dev
Storage Driver: overlay2
 Backing Filesystem: extfs
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins: 
 Volume: local
 Network: bridge host null overlay overlay
Swarm: active
 NodeID: 9e55spg4o1eqssug96hdgkeit
 Is Manager: true
 ClusterID: 9wygveeipj0bzxky2anm339rx
 Managers: 1
 Nodes: 1
 Orchestration:
  Task History Retention Limit: 5
 Raft:
  Snapshot Interval: 10000
  Heartbeat Tick: 1
  Election Tick: 3
 Dispatcher:
  Heartbeat Period: 5 seconds
 CA Configuration:
  Expiry Duration: 3 months
 Node Address: 10.140.0.2
Runtimes: runc
Default Runtime: runc
Security Options: apparmor seccomp
Kernel Version: 4.4.0-36-generic
Operating System: Ubuntu 16.04.1 LTS
OSType: linux
Architecture: x86_64
CPUs: 4
Total Memory: 14.69 GiB
Name: ws01
ID: SN3T:CNK6:JKQD:54CY:XKF2:BRX3:CIRU:DQBT:6DVZ:VWQ2:Q5ET:F23L
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): true
 File Descriptors: 43
 Goroutines: 140
 System Time: 2016-09-17T12:52:12.956930614Z
 EventsListeners: 1
Registry: https://index.docker.io/v1/
WARNING: No swap limit support
Experimental: true
Insecure Registries:
 127.0.0.0/8
Live Restore Enabled: false

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions