Lots of data races when this package is used in anger.
2014/07/02 14:50:20 http: TLS handshake error from 127.0.0.1:58121: remote error: bad certificate
2014/07/02 14:50:20 http: TLS handshake error from 127.0.0.1:58124: remote error: bad certificate
==================
WARNING: DATA RACE
Read by goroutine 123:
runtime.mapaccess2_faststr()
/home/dfc/go/src/pkg/runtime/hashmap_fast.c:122 +0x0
launchpad.net/goose/testservices/swiftservice.(*Swift).GetObject()
/home/dfc/src/launchpad.net/goose/testservices/swiftservice/service.go:83 +0x32a
launchpad.net/goose/testservices/swiftservice.(*Swift).handleObjects()
/home/dfc/src/launchpad.net/goose/testservices/swiftservice/service_http.go:129 +0x215
launchpad.net/goose/testservices/swiftservice.(*Swift).ServeHTTP()
/home/dfc/src/launchpad.net/goose/testservices/swiftservice/service_http.go:200 +0x3fb
net/http.(*ServeMux).ServeHTTP()
/home/dfc/go/src/pkg/net/http/server.go:1511 +0x21c
net/http.serverHandler.ServeHTTP()
/home/dfc/go/src/pkg/net/http/server.go:1673 +0x1fc
net/http.(*conn).serve()
/home/dfc/go/src/pkg/net/http/server.go:1174 +0xf9e
Previous write by goroutine 54:
runtime.mapdelete()
/home/dfc/go/src/pkg/runtime/hashmap.goc:948 +0x0
launchpad.net/goose/testservices/swiftservice.(*Swift).RemoveObject()
/home/dfc/src/launchpad.net/goose/testservices/swiftservice/service.go:181 +0x360
launchpad.net/goose/testservices/swiftservice.(*Swift).handleObjects()
/home/dfc/src/launchpad.net/goose/testservices/swiftservice/service_http.go:142 +0x400
launchpad.net/goose/testservices/swiftservice.(*Swift).ServeHTTP()
/home/dfc/src/launchpad.net/goose/testservices/swiftservice/service_http.go:200 +0x3fb
net/http.(*ServeMux).ServeHTTP()
/home/dfc/go/src/pkg/net/http/server.go:1511 +0x21c
net/http.serverHandler.ServeHTTP()
/home/dfc/go/src/pkg/net/http/server.go:1673 +0x1fc
net/http.(*conn).serve()
/home/dfc/go/src/pkg/net/http/server.go:1174 +0xf9e
runtime.gosched0()
/home/dfc/go/src/pkg/runtime/proc.c:1440 +0xbf
math/big.nat.expNNWindowed()
/home/dfc/go/src/pkg/math/big/nat.go:1359 +0xea8
math/big.nat.expNN()
/home/dfc/go/src/pkg/math/big/nat.go:1260 +0x4f1
math/big.nat.probablyPrime()
/home/dfc/go/src/pkg/math/big/nat.go:1445 +0x990
math/big.(*Int).ProbablyPrime()
/home/dfc/go/src/pkg/math/big/int.go:735 +0x7b
crypto/rsa.(*PrivateKey).Validate()
/home/dfc/go/src/pkg/crypto/rsa/rsa.go:91 +0x188
crypto/x509.ParsePKCS1PrivateKey()
/home/dfc/go/src/pkg/crypto/x509/pkcs1.go:77 +0xa3c
crypto/tls.parsePrivateKey()
/home/dfc/go/src/pkg/crypto/tls/tls.go:259 +0x94
crypto/tls.X509KeyPair()
/home/dfc/go/src/pkg/crypto/tls/tls.go:213 +0x3f5
github.com/juju/juju/environs/config.verifyKeyPair()
/home/dfc/src/github.com/juju/juju/environs/config/authkeys.go:82 +0x10d
github.com/juju/juju/environs/config.Validate()
/home/dfc/src/github.com/juju/juju/environs/config/config.go:333 +0x1496
github.com/juju/juju/environs/config.New()
/home/dfc/src/github.com/juju/juju/environs/config/config.go:170 +0x2b3
github.com/juju/juju/provider/openstack.environProvider.Validate()
/home/dfc/src/github.com/juju/juju/provider/openstack/config.go:229 +0x228d
github.com/juju/juju/provider/openstack.environProvider.newConfig()
/home/dfc/src/github.com/juju/juju/provider/openstack/config.go:99 +0x58
github.com/juju/juju/provider/openstack.(*environ).SetConfig()
/home/dfc/src/github.com/juju/juju/provider/openstack/provider.go:700 +0x83
github.com/juju/juju/provider/openstack.environProvider.Open()
/home/dfc/src/github.com/juju/juju/provider/openstack/provider.go:206 +0x187
github.com/juju/juju/provider/openstack.environProvider.Prepare()
/home/dfc/src/github.com/juju/juju/provider/openstack/provider.go:227 +0x3ae
github.com/juju/juju/provider/openstack.environProvider.Prepare·i()
<autogenerated>:110 +0x8a
github.com/juju/juju/environs.prepare()
/home/dfc/src/github.com/juju/juju/environs/open.go:219 +0x307
github.com/juju/juju/environs.Prepare()
/home/dfc/src/github.com/juju/juju/environs/open.go:196 +0xa2b
github.com/juju/juju/provider/openstack_test.(*localHTTPSServerSuite).SetUpTest()
/home/dfc/src/github.com/juju/juju/provider/openstack/local_test.go:935 +0x606
runtime.call16()
/home/dfc/go/src/pkg/runtime/asm_amd64.s:363 +0x31
reflect.Value.Call()
/home/dfc/go/src/pkg/reflect/value.go:411 +0xed
launchpad.net/gocheck.func·005()
/home/dfc/src/launchpad.net/gocheck/gocheck.go:685 +0x1b7
launchpad.net/gocheck.func·004()
/home/dfc/src/launchpad.net/gocheck/gocheck.go:630 +0xf4
Goroutine 123 (running) created at:
net/http.(*Server).Serve()
/home/dfc/go/src/pkg/net/http/server.go:1721 +0x35d
Goroutine 54 (running) created at:
net/http.(*Server).Serve()
/home/dfc/go/src/pkg/net/http/server.go:1721 +0x35d
==================
==================
WARNING: DATA RACE
Read by goroutine 40:
runtime.mapaccess2_faststr()
/home/dfc/go/src/pkg/runtime/hashmap_fast.c:122 +0x0
launchpad.net/goose/testservices/swiftservice.(*Swift).GetObject()
/home/dfc/src/launchpad.net/goose/testservices/swiftservice/service.go:83 +0x32a
launchpad.net/goose/testservices/swiftservice.(*Swift).handleObjects()
/home/dfc/src/launchpad.net/goose/testservices/swiftservice/service_http.go:129 +0x215
launchpad.net/goose/testservices/swiftservice.(*Swift).ServeHTTP()
/home/dfc/src/launchpad.net/goose/testservices/swiftservice/service_http.go:200 +0x3fb
net/http.(*ServeMux).ServeHTTP()
/home/dfc/go/src/pkg/net/http/server.go:1511 +0x21c
net/http.serverHandler.ServeHTTP()
/home/dfc/go/src/pkg/net/http/server.go:1673 +0x1fc
net/http.(*conn).serve()
/home/dfc/go/src/pkg/net/http/server.go:1174 +0xf9e
Previous write by goroutine 94:
runtime.mapdelete()
/home/dfc/go/src/pkg/runtime/hashmap.goc:948 +0x0
launchpad.net/goose/testservices/swiftservice.(*Swift).RemoveObject()
/home/dfc/src/launchpad.net/goose/testservices/swiftservice/service.go:181 +0x360
launchpad.net/goose/testservices/swiftservice.(*Swift).handleObjects()
/home/dfc/src/launchpad.net/goose/testservices/swiftservice/service_http.go:142 +0x400
launchpad.net/goose/testservices/swiftservice.(*Swift).ServeHTTP()
/home/dfc/src/launchpad.net/goose/testservices/swiftservice/service_http.go:200 +0x3fb
net/http.(*ServeMux).ServeHTTP()
/home/dfc/go/src/pkg/net/http/server.go:1511 +0x21c
net/http.serverHandler.ServeHTTP()
/home/dfc/go/src/pkg/net/http/server.go:1673 +0x1fc
net/http.(*conn).serve()
/home/dfc/go/src/pkg/net/http/server.go:1174 +0xf9e
runtime.gosched0()
/home/dfc/go/src/pkg/runtime/proc.c:1440 +0xbf
crypto/elliptic.p256Mul()
/home/dfc/go/src/pkg/crypto/elliptic/p256.go:645 +0x15ad
crypto/elliptic.p256PointAdd()
/home/dfc/go/src/pkg/crypto/elliptic/p256.go:921 +0x56d
crypto/elliptic.p256ScalarMult()
/home/dfc/go/src/pkg/crypto/elliptic/p256.go:1127 +0x7c9
crypto/elliptic.p256Curve.ScalarMult()
/home/dfc/go/src/pkg/crypto/elliptic/p256.go:76 +0x158
crypto/tls.(*ecdheKeyAgreement).generateClientKeyExchange()
/home/dfc/go/src/pkg/crypto/tls/key_agreement.go:394 +0x415
crypto/tls.(*clientHandshakeState).doFullHandshake()
/home/dfc/go/src/pkg/crypto/tls/handshake_client.go:402 +0x185c
crypto/tls.(*Conn).clientHandshake()
/home/dfc/go/src/pkg/crypto/tls/handshake_client.go:184 +0x1f36
crypto/tls.(*Conn).Handshake()
/home/dfc/go/src/pkg/crypto/tls/conn.go:974 +0x144
net/http.func·021()
/home/dfc/go/src/pkg/net/http/transport.go:577 +0x5b
Goroutine 40 (running) created at:
net/http.(*Server).Serve()
/home/dfc/go/src/pkg/net/http/server.go:1721 +0x35d
Goroutine 94 (running) created at:
net/http.(*Server).Serve()
/home/dfc/go/src/pkg/net/http/server.go:1721 +0x35d
==================
==================
WARNING: DATA RACE
Read by goroutine 305:
runtime.mapaccess2_faststr()
/home/dfc/go/src/pkg/runtime/hashmap_fast.c:122 +0x0
launchpad.net/goose/testservices/swiftservice.(*Swift).GetObject()
/home/dfc/src/launchpad.net/goose/testservices/swiftservice/service.go:83 +0x32a
launchpad.net/goose/testservices/swiftservice.(*Swift).handleObjects()
/home/dfc/src/launchpad.net/goose/testservices/swiftservice/service_http.go:129 +0x215
launchpad.net/goose/testservices/swiftservice.(*Swift).ServeHTTP()
/home/dfc/src/launchpad.net/goose/testservices/swiftservice/service_http.go:200 +0x3fb
net/http.(*ServeMux).ServeHTTP()
/home/dfc/go/src/pkg/net/http/server.go:1511 +0x21c
net/http.serverHandler.ServeHTTP()
/home/dfc/go/src/pkg/net/http/server.go:1673 +0x1fc
net/http.(*conn).serve()
/home/dfc/go/src/pkg/net/http/server.go:1174 +0xf9e
Previous write by goroutine 233:
runtime.mapdelete()
/home/dfc/go/src/pkg/runtime/hashmap.goc:948 +0x0
launchpad.net/goose/testservices/swiftservice.(*Swift).RemoveObject()
/home/dfc/src/launchpad.net/goose/testservices/swiftservice/service.go:181 +0x360
launchpad.net/goose/testservices/swiftservice.(*Swift).handleObjects()
/home/dfc/src/launchpad.net/goose/testservices/swiftservice/service_http.go:142 +0x400
launchpad.net/goose/testservices/swiftservice.(*Swift).ServeHTTP()
/home/dfc/src/launchpad.net/goose/testservices/swiftservice/service_http.go:200 +0x3fb
net/http.(*ServeMux).ServeHTTP()
/home/dfc/go/src/pkg/net/http/server.go:1511 +0x21c
net/http.serverHandler.ServeHTTP()
/home/dfc/go/src/pkg/net/http/server.go:1673 +0x1fc
net/http.(*conn).serve()
/home/dfc/go/src/pkg/net/http/server.go:1174 +0xf9e
Goroutine 305 (running) created at:
net/http.(*Server).Serve()
/home/dfc/go/src/pkg/net/http/server.go:1721 +0x35d
Goroutine 233 (running) created at:
net/http.(*Server).Serve()
/home/dfc/go/src/pkg/net/http/server.go:1721 +0x35d
==================
OK: 77 passed, 5 skipped
PASS
Found 3 data race(s)
I think this is Fix Committed now, right?
On Wed, Jul 2, 2014 at 9:33 AM, Dave Cheney <email address hidden>
wrote:
> Public bug reported: mapaccess2_ faststr( ) go/src/ pkg/runtime/ hashmap_ fast.c: 122 +0x0 net/goose/ testservices/ swiftservice. (*Swift) .GetObject( ) net/goose/ testservices/ swiftservice/ service. go:83 +0x32a net/goose/ testservices/ swiftservice. (*Swift) .handleObjects( ) net/goose/ testservices/ swiftservice/ service_ http.go: 129 +0x215 net/goose/ testservices/ swiftservice. (*Swift) .ServeHTTP( ) net/goose/ testservices/ swiftservice/ service_ http.go: 200 +0x3fb (*ServeMux) .ServeHTTP( ) go/src/ pkg/net/ http/server. go:1511 +0x21c serverHandler. ServeHTTP( ) go/src/ pkg/net/ http/server. go:1673 +0x1fc (*conn) .serve( ) go/src/ pkg/net/ http/server. go:1174 +0xf9e go/src/ pkg/runtime/ hashmap. goc:948 +0x0 net/goose/ testservices/ swiftservice. (*Swift) .RemoveObject( ) net/goose/ testservices/ swiftservice/ service. go:181 +0x360 net/goose/ testservices/ swiftservice. (*Swift) .handleObjects( ) net/goose/ testservices/ swiftservice/ service_ http.go: 142 +0x400 net/goose/ testservices/ swiftservice. (*Swift) .ServeHTTP( ) net/goose/ testservices/ swiftservice/ service_ http.go: 200 +0x3fb (*ServeMux) .ServeHTTP( ) go/src/ pkg/net/ http/server. go:1511 +0x21c serverHandler. ServeHTTP( ) go/src/ pkg/net/ http/server. go:1673 +0x1fc (*conn) .serve( ) go/src/ pkg/net/ http/server. go:1174 +0xf9e go/src/ pkg/runtime/ proc.c: 1440 +0xbf nat.expNNWindow ed() go/src/ pkg/math/ big/nat. go:1359 +0xea8 nat.expNN( ) go/src/ pkg/math/ big/nat. go:1260 +0x4f1 nat.probablyPri me() go/src/ pkg/math/ big/nat. go:1445 +0x990 (*Int). ProbablyPrime( ) go/src/ pkg/math/ big/int. go:735 +0x7b rsa.(*PrivateKe y).Validate( ) go/src/ pkg/crypto/ rsa/rsa. go:91 +0x188 x509.ParsePKCS1 PrivateKey( ) go/src/ pkg/crypto/ x509/pkcs1. go:77 +0xa3c tls.parsePrivat eKey() go/src/ pkg/crypto/ tls/tls. go:259 +0x94 tls.X509KeyPair () go/src/ pkg/crypto/ tls/tls. go:213 +0x3f5 com/juju/ juju/environs/ config. verifyKeyPair( ) src/github. com/juju/ juju/environs/ config/ auth...
>
> Lots of data races when this package is used in anger.
>
> 2014/07/02 14:50:20 http: TLS handshake error from 127.0.0.1:58121:
> remote error: bad certificate
> 2014/07/02 14:50:20 http: TLS handshake error from 127.0.0.1:58124:
> remote error: bad certificate
> ==================
> WARNING: DATA RACE
> Read by goroutine 123:
> runtime.
> /home/dfc/
> launchpad.
> /home/dfc/src/
> launchpad.
> launchpad.
> /home/dfc/src/
> launchpad.
> launchpad.
> /home/dfc/src/
> launchpad.
> net/http.
> /home/dfc/
> net/http.
> /home/dfc/
> net/http.
> /home/dfc/
>
> Previous write by goroutine 54:
> runtime.mapdelete()
> /home/dfc/
> launchpad.
> /home/dfc/src/
> launchpad.
> launchpad.
> /home/dfc/src/
> launchpad.
> launchpad.
> /home/dfc/src/
> launchpad.
> net/http.
> /home/dfc/
> net/http.
> /home/dfc/
> net/http.
> /home/dfc/
> runtime.gosched0()
> /home/dfc/
> math/big.
> /home/dfc/
> math/big.
> /home/dfc/
> math/big.
> /home/dfc/
> math/big.
> /home/dfc/
> crypto/
> /home/dfc/
> crypto/
> /home/dfc/
> crypto/
> /home/dfc/
> crypto/
> /home/dfc/
> github.
> /home/dfc/