← Back to team overview

touch-packages team mailing list archive

[Bug 1472650] Re: [arm64] gccgo runtime crashes with CONFIG_ARM64_PGTABLE_LEVELS=4

 

** Description changed:

- lxd 0.12-0ubuntu2
- libgo7/5.1.1-12ubuntu1
+ [Impact]
+ Various go-based packages crash on startup on arm64 when booted with a kernel where CONFIG_ARM64_PGTABLE_LEVELS=4. LXD, docker and juju are examples.
  
- Jul 08 00:11:16 vital-beggar systemd[1]: Starting Container hypervisor based on LXC...
- -- Subject: Unit lxd.service has begun start-up
- -- Defined-By: systemd
- -- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
- -- 
- -- Unit lxd.service has begun starting up.
- Jul 08 00:11:16 vital-beggar lxd[1712]: p=0xffff98d18000
- Jul 08 00:11:16 vital-beggar lxd[1712]: fatal error: runtime_lfstackpush: invalid pointer
- Jul 08 00:11:16 vital-beggar lxd[1712]: runtime stack:
- Jul 08 00:11:16 vital-beggar lxd[1712]: runtime_dopanic
- Jul 08 00:11:16 vital-beggar lxd[1712]: ../../../src/libgo/runtime/panic.c:135
- Jul 08 00:11:16 vital-beggar lxd[1712]: runtime_throw
- Jul 08 00:11:16 vital-beggar lxd[1712]: ../../../src/libgo/runtime/panic.c:193
- Jul 08 00:11:16 vital-beggar lxd[1712]: runtime.lfstackpush
- Jul 08 00:11:16 vital-beggar lxd[1712]: ../../../src/libgo/runtime/lfstack.goc:40
- Jul 08 00:11:16 vital-beggar lxd[1712]: getempty
- Jul 08 00:11:16 vital-beggar lxd[1712]: ../../../src/libgo/runtime/mgc0.c:1377
- Jul 08 00:11:16 vital-beggar lxd[1712]: enqueue1
- Jul 08 00:11:16 vital-beggar lxd[1712]: ../../../src/libgo/runtime/mgc0.c:1255
- Jul 08 00:11:16 vital-beggar lxd[1712]: markroot
- Jul 08 00:11:16 vital-beggar lxd[1712]: ../../../src/libgo/runtime/mgc0.c:1285
- Jul 08 00:11:16 vital-beggar lxd[1712]: runtime_parfordo
- Jul 08 00:11:16 vital-beggar lxd[1712]: ../../../src/libgo/runtime/parfor.c:88
- Jul 08 00:11:16 vital-beggar lxd[1712]: gc
- Jul 08 00:11:16 vital-beggar lxd[1712]: ../../../src/libgo/runtime/mgc0.c:2266
- Jul 08 00:11:16 vital-beggar lxd[1712]: mgc
- Jul 08 00:11:16 vital-beggar lxd[1712]: ../../../src/libgo/runtime/mgc0.c:2211
- Jul 08 00:11:16 vital-beggar lxd[1712]: runtime_mstart
- Jul 08 00:11:16 vital-beggar lxd[1712]: ../../../src/libgo/runtime/proc.c:1076
- Jul 08 00:11:16 vital-beggar lxd[1712]: goroutine 16 [garbage collection]:
- Jul 08 00:11:16 vital-beggar systemd[1]: lxd.service: Main process exited, code=exited, status=2/INVALIDARGUMENT
- Jul 08 00:11:16 vital-beggar systemd[1]: lxd.service: Unit entered failed state.
- Jul 08 00:11:16 vital-beggar systemd[1]: lxd.service: Failed with result 'exit-code'.
- Jul 08 00:11:16 vital-beggar lxd[1712]: runtime_mcall
- Jul 08 00:11:16 vital-beggar lxd[1712]: ../../../src/libgo/runtime/proc.c:295
- Jul 08 00:11:16 vital-beggar lxd[1712]: runtime_gc
- Jul 08 00:11:16 vital-beggar lxd[1712]: ../../../src/libgo/runtime/mgc0.c:2187
- Jul 08 00:11:16 vital-beggar lxd[1712]: runtime_mallocgc
- Jul 08 00:11:16 vital-beggar lxd[1712]: ../../../src/libgo/runtime/malloc.goc:259
- Jul 08 00:11:16 vital-beggar lxd[1712]: :0
- Jul 08 00:11:16 vital-beggar lxd[1712]: :0
- Jul 08 00:11:16 vital-beggar lxd[1712]: runtime_main
- Jul 08 00:11:16 vital-beggar lxd[1712]: ../../../src/libgo/runtime/proc.c:626
- Jul 08 00:11:16 vital-beggar lxd[1712]: goroutine 17 [runnable]:
- Jul 08 00:11:16 vital-beggar lxd[1712]: kickoff
- Jul 08 00:11:16 vital-beggar lxd[1712]: ../../../src/libgo/runtime/proc.c:232
- Jul 08 00:11:16 vital-beggar lxd[1712]: created by runtime_main
- Jul 08 00:11:16 vital-beggar lxd[1712]: ../../../src/libgo/runtime/proc.c:598
- Jul 08 00:11:16 vital-beggar lxd[1712]: goroutine 18 [runnable]:
- Jul 08 00:11:16 vital-beggar lxd[1712]: kickoff
- Jul 08 00:11:16 vital-beggar lxd[1712]: ../../../src/libgo/runtime/proc.c:232
- Jul 08 00:11:16 vital-beggar lxd[1712]: created by runtime_createfing
- Jul 08 00:11:16 vital-beggar lxd[1712]: ../../../src/libgo/runtime/mgc0.c:2572
- Jul 08 00:11:16 vital-beggar lxd[1712]: goroutine 19 [runnable]:
- Jul 08 00:11:16 vital-beggar lxd[1712]: kickoff
- Jul 08 00:11:16 vital-beggar lxd[1712]: ../../../src/libgo/runtime/proc.c:232
- Jul 08 00:11:16 vital-beggar lxd[1712]: created by os_signal..import
- Jul 08 00:11:16 vital-beggar lxd[1712]: ../../../src/libgo/go/os/signal/signal_unix.go:25
- Jul 08 00:11:16 vital-beggar systemd[1]: lxd.service: Service hold-off time over, scheduling restart.
- Jul 08 00:11:16 vital-beggar systemd[1]: lxd.service: Start request repeated too quickly.
- Jul 08 00:11:16 vital-beggar systemd[1]: Failed to start Container hypervisor based on LXC.
- -- Subject: Unit lxd.service has failed
- -- Defined-By: systemd
- -- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
- -- 
- -- Unit lxd.service has failed.
- -- 
- -- The result is failed.
- Jul 08 00:11:16 vital-beggar systemd[1]: lxd.service: Unit entered failed state.
- Jul 08 00:11:16 vital-beggar systemd[1]: lxd.service: Failed with result 'start-limit'.
+ Ubuntu does not ship with this config, so it is currently not impacted.
+ However, we would like to enable this config to add new hardware support
+ in 15.10. The 15.10 kernel will eventually be provided in trusty as an
+ lts backport, at which point this will begin to break users.
+ 
+ [Test Case]
+ Boot an arm64 system with CONFIG_ARM64_PGTABLE_LEVELS=4 enabled in the kernel. Install docker.io and run "docker help". If it fails, you'll see "fatal error: runtime_lfstackpush" followed by a stack trace. If it succeeds, you'll get normal help output.
+ 
+ [Regression Risk]
+ The risk of regression is lessened by testing this release on existing Ubuntu kernels w/ 3 level page tables.

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to gccgo-4.9 in Ubuntu.
https://bugs.launchpad.net/bugs/1472650

Title:
  [arm64] gccgo runtime crashes with CONFIG_ARM64_PGTABLE_LEVELS=4

Status in gcc:
  Unknown
Status in gcc-5 package in Ubuntu:
  Fix Released
Status in gccgo-4.9 package in Ubuntu:
  Invalid
Status in gccgo-5 package in Ubuntu:
  Invalid
Status in gccgo-4.9 source package in Trusty:
  In Progress
Status in gccgo-4.9 source package in Vivid:
  Invalid
Status in gccgo-5 source package in Vivid:
  Fix Committed
Status in gccgo-4.9 source package in Wily:
  Invalid

Bug description:
  [Impact]
  Various go-based packages crash on startup on arm64 when booted with a kernel where CONFIG_ARM64_PGTABLE_LEVELS=4. LXD, docker and juju are examples.

  Ubuntu does not ship with this config, so it is currently not
  impacted. However, we would like to enable this config to add new
  hardware support in 15.10. The 15.10 kernel will eventually be
  provided in trusty as an lts backport, at which point this will begin
  to break users.

  [Test Case]
  Boot an arm64 system with CONFIG_ARM64_PGTABLE_LEVELS=4 enabled in the kernel. Install docker.io and run "docker help". If it fails, you'll see "fatal error: runtime_lfstackpush" followed by a stack trace. If it succeeds, you'll get normal help output.

  [Regression Risk]
  The risk of regression is lessened by testing this release on existing Ubuntu kernels w/ 3 level page tables.

To manage notifications about this bug go to:
https://bugs.launchpad.net/gcc/+bug/1472650/+subscriptions