lucky(~/src/github.com/juju/juju) % go vet ./... 2>&1 | grep Mutex
provider/gce/environ.go:139: assignment copies lock value to e: gce.environ contains sync.Mutex
provider/joyent/environ.go:129: assignment copies lock value to clone: joyent.joyentEnviron contains sync.Mutex
provider/lxd/environ.go:127: assignment copies lock value to e: lxd.environ contains sync.Mutex
provider/maas/storage_test.go:69: function call copies lock value: sync.Mutex
provider/maas/storage_test.go:69: function call copies lock value: sync.Mutex
provider/maas/storage_test.go:70: function call copies lock value: sync.Mutex
provider/maas/storage_test.go:70: function call copies lock value: sync.Mutex
provider/vsphere/environ.go:84: assignment copies lock value to e: vsphere.environ contains sync.Mutex
worker/metrics/sender/sender_test.go:286: eof passes lock by value: sender_test.mockConnection contains github.com/juju/testing.Stub contains sync.Mutex
A recent addition to go vet spots mutex's that are copied when the type they are embedded into are copied. This breaks the invariant.