Skip to content

Data race in containerData.GetInfo() #3735

@bboreham

Description

@bboreham

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
==================

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions