arm64 test timeout due to cert creation

Bug #1648052 reported by Martin Packman
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Canonical Juju
Fix Released
High
Tim Penhey
2.1
Fix Released
High
Tim Penhey

Bug Description

On the arm64 CI tests we have been hitting the 25 minute timeout on larger test binaries. This is due to spending a lot of time generating RSA certs which doesn't have a fast path on this arch.

Most of these are categoried under this issue in reports:

<http://reports.vapour.ws/releases/issue/562a396a749a561a0619d324>

From a pprof trace of a test:

----------------------------------------------------------+-------------
                                             8.58s 100% | github.com/juju/juju/cert.NewDefaultServer
         0 0% 94.05% 8.58s 89.56% | github.com/juju/utils/cert.NewLeaf
                                             8.52s 99.30% | crypto/rsa.GenerateKey
                                             0.06s 0.7% | crypto/x509.CreateCertificate
----------------------------------------------------------+-------------

Also see panic goroutine trace:

<http://reports.vapour.ws/releases/4628/job/run-unit-tests-xenial-arm64/attempt/1577>

panic: test timed out after 25m0s
...
goroutine 26110 [runnable]:
math/big.mulAddWWW_g(0x939b19daef50e4b, 0xf7a47d0c70cc2c95, 0x54f1fb9c94e1120b, 0xdd72fc5284632d1b, 0x5408cd2bd48d41b0)
 /usr/lib/go-1.6/src/math/big/arith.go:72
math/big.addMulVVW_g(0x4820089680, 0x10, 0x26, 0x4820755b80, 0x10, 0x14, 0xf7a47d0c70cc2c95, 0xdd72fc5284632d1b)
 /usr/lib/go-1.6/src/math/big/arith.go:292 +0xa0
math/big.nat.montgomery(0x4820089680, 0x10, 0x26, 0x4820ca0aa0, 0x10, 0x14, 0x4820ca0aa0, 0x10, 0x14, 0x4820755b80, ...)
 /usr/lib/go-1.6/src/math/big/nat.go:223 +0x16c
math/big.nat.expNNMontgomery(0x4820089680, 0x10, 0x26, 0x4820ca0a00, 0x10, 0x14, 0x4820ca08c0, 0x10, 0x14, 0x4820755b80, ...)
 /usr/lib/go-1.6/src/math/big/nat.go:1120 +0x9e0
math/big.nat.expNN(0x4820ca0aa0, 0x10, 0x14, 0x4820ca0a00, 0x10, 0x14, 0x4820ca08c0, 0x10, 0x14, 0x4820755b80, ...)
 /usr/lib/go-1.6/src/math/big/nat.go:932 +0x474
math/big.nat.probablyPrime(0x4820755b80, 0x10, 0x14, 0x14, 0x4820755b80)
 /usr/lib/go-1.6/src/math/big/nat.go:1219 +0x71c
math/big.(*Int).ProbablyPrime(0x4820473ac0, 0x14, 0x4820dfb8e0)
 /usr/lib/go-1.6/src/math/big/int.go:563 +0xe4
crypto/rand.Prime(0xffff9a37f600, 0x48200125a0, 0x400, 0x4820473ac0, 0x0, 0x0)
 /usr/lib/go-1.6/src/crypto/rand/util.go:99 +0x494
crypto/rsa.GenerateMultiPrimeKey(0xffff9a37f600, 0x48200125a0, 0x2, 0x800, 0x4820597680, 0x0, 0x0)
 /usr/lib/go-1.6/src/crypto/rsa/rsa.go:237 +0x1f4
crypto/rsa.GenerateKey(0xffff9a37f600, 0x48200125a0, 0x800, 0x4820fbd200, 0x0, 0x0)
 /usr/lib/go-1.6/src/crypto/rsa/rsa.go:195 +0x48
github.com/juju/utils/cert.NewLeaf(0x4820dfc530, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
 /home/ubuntu/juju-core_2.1-rc1/src/github.com/juju/utils/cert/cert.go:93 +0x390
github.com/juju/juju/cert.NewDefaultServer(0x482007c000, 0x55b, 0x48200c5800, 0x68f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...)
 /home/ubuntu/juju-core_2.1-rc1/src/github.com/juju/juju/cert/cert.go:49 +0x200
github.com/juju/juju/controller.GenerateControllerCertAndKey(0x482007c000, 0x55b, 0x48200c5800, 0x68f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...)
 /home/ubuntu/juju-core_2.1-rc1/src/github.com/juju/juju/controller/config.go:290 +0x68
github.com/juju/juju/environs/bootstrap.finalizeInstanceBootstrapConfig(0xffff98b491f8, 0x4820cba660, 0x482060af00, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...)
 /home/ubuntu/juju-core_2.1-rc1/src/github.com/juju/juju/environs/bootstrap/bootstrap.go:456 +0x340
github.com/juju/juju/environs/bootstrap.Bootstrap(0xffff98b491f8, 0x4820cba660, 0xffff98b49348, 0x48200d6b40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...)
 /home/ubuntu/juju-core_2.1-rc1/src/github.com/juju/juju/environs/bootstrap/bootstrap.go:417 +0x17c4
github.com/juju/juju/juju/testing.(*JujuConnSuite).setUpConn(0x48204268c0, 0x4820e5e5a0)
 /home/ubuntu/juju-core_2.1-rc1/src/github.com/juju/juju/juju/testing/conn.go:385 +0x1328
github.com/juju/juju/juju/testing.(*JujuConnSuite).SetUpTest(0x48204268c0, 0x4820e5e5a0)
 /home/ubuntu/juju-core_2.1-rc1/src/github.com/juju/juju/juju/testing/conn.go:126 +0x100
reflect.Value.call(0x2007fc0, 0x48204268c0, 0x7213, 0x21527e8, 0x4, 0x4820dfdee8, 0x1, 0x1, 0x0, 0x0, ...)
 /usr/lib/go-1.6/src/reflect/value.go:435 +0xeec
reflect.Value.Call(0x2007fc0, 0x48204268c0, 0x7213, 0x4820dfdee8, 0x1, 0x1, 0x0, 0x0, 0x0)
 /usr/lib/go-1.6/src/reflect/value.go:303 +0x88
gopkg.in/check%2ev1.(*suiteRunner).runFixture.func1(0x4820e5e5a0)
 /home/ubuntu/juju-core_2.1-rc1/src/gopkg.in/check.v1/check.go:721 +0x140
gopkg.in/check%2ev1.(*suiteRunner).forkCall.func1(0x48210f9800, 0x4820e5e5a0, 0x2723cc8)
 /home/ubuntu/juju-core_2.1-rc1/src/gopkg.in/check.v1/check.go:666 +0x80
created by gopkg.in/check%2ev1.(*suiteRunner).forkCall
 /home/ubuntu/juju-core_2.1-rc1/src/gopkg.in/check.v1/check.go:667 +0x2a4

Martin Packman (gz)
tags: added: arm64 ci jujuqa unit-tests
Changed in juju:
assignee: nobody → Martin Packman (gz)
status: Triaged → In Progress
Changed in juju:
milestone: 2.1-rc1 → 2.1-beta3
Curtis Hovey (sinzui)
Changed in juju:
milestone: 2.1-beta3 → 2.1-rc1
Changed in juju:
assignee: Martin Packman (gz) → nobody
status: In Progress → Triaged
Changed in juju:
milestone: 2.1-beta4 → 2.2.0
Tim Penhey (thumper)
Changed in juju:
status: Triaged → Fix Committed
assignee: nobody → Tim Penhey (thumper)
Curtis Hovey (sinzui)
Changed in juju:
status: Fix Committed → Fix Released
Changed in juju:
milestone: 2.2.0 → 2.2.0-alpha1
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.