snappy rollback crashes

Bug #1450530 reported by Michael Vogt
10
This bug affects 2 people
Affects Status Importance Assigned to Milestone
Snappy
Fix Released
Critical
John Lenton
15.04
Fix Released
Critical
John Lenton

Bug Description

The following crash was reported via a customer:
"""
root@localhost:~# snappy rollback icos
panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xb code=0x1 addr=0x20 pc=0x5cb101]

goroutine 16 [running]:
runtime.panic(0x822fe0, 0xcb83f3)
        /usr/lib/go/src/pkg/runtime/panic.c:279 +0xf5
launchpad.net/snappy/systemd.(*systemd).Stop(0xc208101a60, 0xc2080db2d4, 0x22, 0x6fc23ac00, 0x0, 0x0)
        /build/buildd/ubuntu-snappy-1.0.1/obj-x86_64-linux-gnu/src/launchpad.net/snappy/systemd/systemd.go:150 +0x311
launchpad.net/snappy/snappy.removePackageServices(0xc208040f00, 0x12, 0x0, 0x0, 0x0, 0x0)
        /build/buildd/ubuntu-snappy-1.0.1/obj-x86_64-linux-gnu/src/launchpad.net/snappy/snappy/click.go:626 +0x3ed
launchpad.net/snappy/snappy.unsetActiveClick(0xc208040f00, 0x12, 0xc208040f00, 0x0, 0x0, 0x0, 0x0)
        /build/buildd/ubuntu-snappy-1.0.1/obj-x86_64-linux-gnu/src/launchpad.net/snappy/snappy/click.go:1184 +0x1fe
launchpad.net/snappy/snappy.setActiveClick(0xc208060390, 0x12, 0x0, 0x0, 0x0, 0x0, 0x0)
        /build/buildd/ubuntu-snappy-1.0.1/obj-x86_64-linux-gnu/src/launchpad.net/snappy/snappy/click.go:1231 +0x1ab
launchpad.net/snappy/snappy.(*SnapPart).SetActive(0xc208105e80, 0x0, 0x0, 0x0, 0x0)
        /build/buildd/ubuntu-snappy-1.0.1/obj-x86_64-linux-gnu/src/launchpad.net/snappy/snappy/snapp.go:589 +0x84
launchpad.net/snappy/snappy.makeSnapActiveByNameAndVersion(0x7fff6e528e68, 0x4, 0xc2080af9e0, 0x7, 0x0, 0x0)
        /build/buildd/ubuntu-snappy-1.0.1/obj-x86_64-linux-gnu/src/launchpad.net/snappy/snappy/parts.go:332 +0x295
launchpad.net/snappy/snappy.Rollback(0x7fff6e528e68, 0x4, 0xc2080af9e0, 0x7, 0x0, 0x0, 0x0, 0x0)
        /build/buildd/ubuntu-snappy-1.0.1/obj-x86_64-linux-gnu/src/launchpad.net/snappy/snappy/rollback.go:47 +0x295
main.(*cmdRollback).Execute(0xc208040760, 0xc208041500, 0x0, 0x2, 0x0, 0x0)
        /build/buildd/ubuntu-snappy-1.0.1/obj-x86_64-linux-gnu/src/launchpad.net/snappy/cmd/snappy/cmd_rollback.go:60 +0x162
github.com/jessevdk/go-flags.(*Parser).ParseArgs(0xc208048e80, 0xc20800e010, 0x2, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0)
        /build/buildd/ubuntu-snappy-1.0.1/obj-x86_64-linux-gnu/src/github.com/jessevdk/go-flags/parser.go:241 +0x7cd
github.com/jessevdk/go-flags.(*Parser).Parse(0xc208048e80, 0x0, 0x0, 0x0, 0x0, 0x0)
        /build/buildd/ubuntu-snappy-1.0.1/obj-x86_64-linux-gnu/src/github.com/jessevdk/go-flags/parser.go:126 +0xb3
main.main()
        /build/buildd/ubuntu-snappy-1.0.1/obj-x86_64-linux-gnu/src/launchpad.net/snappy/cmd/snappy/main.go:52 +0x2a

goroutine 19 [finalizer wait]:
runtime.park(0x420e70, 0xccef98, 0xcbb169)
        /usr/lib/go/src/pkg/runtime/proc.c:1369 +0x89
runtime.parkunlock(0xccef98, 0xcbb169)
        /usr/lib/go/src/pkg/runtime/proc.c:1385 +0x3b
runfinq()
        /usr/lib/go/src/pkg/runtime/mgc0.c:2644 +0xcf
runtime.goexit()
        /usr/lib/go/src/pkg/runtime/proc.c:1445

goroutine 20 [syscall]:
os/signal.loop()
        /usr/lib/go/src/pkg/os/signal/signal_unix.go:21 +0x1e
created by os/signal.init·1
        /usr/lib/go/src/pkg/os/signal/signal_unix.go:27 +0x32

goroutine 21 [chan receive]:
launchpad.net/snappy/partition.func·004()
        /build/buildd/ubuntu-snappy-1.0.1/obj-x86_64-linux-gnu/src/launchpad.net/snappy/partition/partition.go:263 +0x4e
created by launchpad.net/snappy/partition.setupSignalHandler
        /build/buildd/ubuntu-snappy-1.0.1/obj-x86_64-linux-gnu/src/launchpad.net/snappy/partition/partition.go:268 +0x174
"""

It appears this is crashing in:
"""
func (s *systemd) Stop(serviceName string, timeout time.Duration) error {
 if _, err := SystemctlCmd("stop", serviceName); err != nil {
  return err
 }

 // and now wait for it to actually stop
 stopped := false
 max := time.Now().Add(timeout)
 for time.Now().Before(max) {
  s.reporter.Notify(fmt.Sprintf("Waiting for %s to stop.", serviceName))
....
"""
in the s.reporter.Notify() line. I.e. s.reporter is NIL.

This appears to be because of:
"""
func makeSnapActiveByNameAndVersion(pkg, ver string) error {
...

 case 1:
  return parts[0].SetActive(nil)
...
"""

Related branches

Michael Vogt (mvo)
Changed in snappy-ubuntu:
importance: Undecided → Critical
status: New → Triaged
description: updated
Michael Vogt (mvo)
summary: - snappy uninstall crashes
+ snappy rollback crashes
Michael Vogt (mvo)
Changed in snappy-ubuntu:
status: Triaged → Fix Committed
Michael Terry (mterry)
affects: snappy-ubuntu → snappy
Changed in snappy:
assignee: nobody → John Lenton (chipaca)
status: Fix Committed → Fix Released
Revision history for this message
dinamic (dinamic6661) wrote :
Download full text (3.2 KiB)

same bug here

sudo snappy rollback webdm
panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xb code=0x1 addr=0x20 pc=0x5ca3b1]

goroutine 16 [running]:
runtime.panic(0x821d80, 0xcb73f3)
 /usr/lib/go/src/pkg/runtime/panic.c:279 +0xf5
launchpad.net/snappy/systemd.(*systemd).Stop(0xc20948bd80, 0xc209481214, 0x19, 0x6fc23ac00, 0x0, 0x0)
 /build/buildd/ubuntu-snappy-0.1.2/obj-x86_64-linux-gnu/src/launchpad.net/snappy/systemd/systemd.go:150 +0x311
launchpad.net/snappy/snappy.removePackageServices(0xc20947cd90, 0xf, 0x0, 0x0, 0x0, 0x0)
 /build/buildd/ubuntu-snappy-0.1.2/obj-x86_64-linux-gnu/src/launchpad.net/snappy/snappy/click.go:609 +0x3ed
launchpad.net/snappy/snappy.unsetActiveClick(0xc20947cd90, 0xf, 0xc20947cd00, 0x0, 0x0, 0x0, 0x0)
 /build/buildd/ubuntu-snappy-0.1.2/obj-x86_64-linux-gnu/src/launchpad.net/snappy/snappy/click.go:1163 +0x1fe
launchpad.net/snappy/snappy.setActiveClick(0xc208f302a0, 0xf, 0x0, 0x0, 0x0, 0x0, 0x0)
 /build/buildd/ubuntu-snappy-0.1.2/obj-x86_64-linux-gnu/src/launchpad.net/snappy/snappy/click.go:1210 +0x1ab
launchpad.net/snappy/snappy.(*SnapPart).SetActive(0xc208f275c0, 0x0, 0x0, 0x0, 0x0)
 /build/buildd/ubuntu-snappy-0.1.2/obj-x86_64-linux-gnu/src/launchpad.net/snappy/snappy/snapp.go:589 +0x84
launchpad.net/snappy/snappy.makeSnapActiveByNameAndVersion(0x7fff682eb853, 0x5, 0xc209517d38, 0x3, 0x0, 0x0)
 /build/buildd/ubuntu-snappy-0.1.2/obj-x86_64-linux-gnu/src/launchpad.net/snappy/snappy/parts.go:332 +0x295
launchpad.net/snappy/snappy.Rollback(0x7fff682eb853, 0x5, 0xc209517d38, 0x3, 0x0, 0x0, 0x0, 0x0)
 /build/buildd/ubuntu-snappy-0.1.2/obj-x86_64-linux-gnu/src/launchpad.net/snappy/snappy/rollback.go:47 +0x295
main.(*cmdRollback).Execute(0xc208041d00, 0xc208040e60, 0x0, 0x2, 0x0, 0x0)
 /build/buildd/ubuntu-snappy-0.1.2/obj-x86_64-linux-gnu/src/launchpad.net/snappy/cmd/snappy/cmd_rollback.go:60 +0x162
github.com/jessevdk/go-flags.(*Parser).ParseArgs(0xc20804ae80, 0xc20800e010, 0x2, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0)
 /build/buildd/ubuntu-snappy-0.1.2/obj-x86_64-linux-gnu/src/github.com/jessevdk/go-flags/parser.go:241 +0x7cd
github.com/jessevdk/go-flags.(*Parser).Parse(0xc20804ae80, 0x0, 0x0, 0x0, 0x0, 0x0)
 /build/buildd/ubuntu-snappy-0.1.2/obj-x86_64-linux-gnu/src/github.com/jessevdk/go-flags/parser.go:126 +0xb3
main.main()
 /build/buildd/ubuntu-snappy-0.1.2/obj-x86_64-linux-gnu/src/launchpad.net/snappy/cmd/snappy/main.go:52 +0x2a

goroutine 19 [finalizer wait]:
runtime.park(0x420e70, 0xccdf98, 0xcba169)
 /usr/lib/go/src/pkg/runtime/proc.c:1369 +0x89
runtime.parkunlock(0xccdf98, 0xcba169)
 /usr/lib/go/src/pkg/runtime/proc.c:1385 +0x3b
runfinq()
 /usr/lib/go/src/pkg/runtime/mgc0.c:2644 +0xcf
runtime.goexit()
 /usr/lib/go/src/pkg/runtime/proc.c:1445

goroutine 20 [syscall]:
os/signal.loop()
 /usr/lib/go/src/pkg/os/signal/signal_unix.go:21 +0x1e
created by os/signal.init·1
 /usr/lib/go/src/pkg/os/signal/signal_unix.go:27 +0x32

goroutine 21 [chan receive]:
launchpad.net/snappy/partition.func·004()
 /build/buildd/ubuntu-snappy-0.1.2/obj-x86_64-linux-gnu/src/launchpad.net/snappy/partition/partition.go:263 +0x4e
created by launchpad.net/snappy/partition.setupSignalHandler
 /build/buildd/ubuntu-snapp...

Read more...

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.