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