snappy rollback crashes
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.
launchpad.
launchpad.
launchpad.
launchpad.
launchpad.
launchpad.
launchpad.
main.(*
github.
github.
main.main()
goroutine 19 [finalizer wait]:
runtime.
runtime.
runfinq()
runtime.goexit()
goroutine 20 [syscall]:
os/signal.loop()
created by os/signal.init·1
goroutine 21 [chan receive]:
launchpad.
created by launchpad.
"""
It appears this is crashing in:
"""
func (s *systemd) Stop(serviceName string, timeout time.Duration) error {
if _, err := SystemctlCmd(
return err
}
// and now wait for it to actually stop
stopped := false
max := time.Now(
for time.Now(
s.reporter.
....
"""
in the s.reporter.Notify() line. I.e. s.reporter is NIL.
This appears to be because of:
"""
func makeSnapActiveB
...
case 1:
return parts[0]
...
"""
Related branches
- Michael Vogt (community): Approve
-
Diff: 287 lines (+52/-24)8 files modifiedcmd/snappy/cmd_rollback.go (+2/-1)
cmd/snappy/cmd_set.go (+2/-1)
snappy/common_test.go (+9/-3)
snappy/parts.go (+2/-2)
snappy/rollback.go (+4/-2)
snappy/rollback_test.go (+15/-2)
snappy/set.go (+4/-3)
snappy/set_test.go (+14/-10)
Changed in snappy-ubuntu: | |
importance: | Undecided → Critical |
status: | New → Triaged |
description: | updated |
summary: |
- snappy uninstall crashes + snappy rollback crashes |
Changed in snappy-ubuntu: | |
status: | Triaged → Fix Committed |
affects: | snappy-ubuntu → snappy |
Changed in snappy: | |
assignee: | nobody → John Lenton (chipaca) |
status: | Fix Committed → Fix Released |
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]: panic(0x821d80, 0xcb73f3) go/src/ pkg/runtime/ panic.c: 279 +0xf5 net/snappy/ systemd. (*systemd) .Stop(0xc20948b d80, 0xc209481214, 0x19, 0x6fc23ac00, 0x0, 0x0) buildd/ ubuntu- snappy- 0.1.2/obj- x86_64- linux-gnu/ src/launchpad. net/snappy/ systemd/ systemd. go:150 +0x311 net/snappy/ snappy. removePackageSe rvices( 0xc20947cd90, 0xf, 0x0, 0x0, 0x0, 0x0) buildd/ ubuntu- snappy- 0.1.2/obj- x86_64- linux-gnu/ src/launchpad. net/snappy/ snappy/ click.go: 609 +0x3ed net/snappy/ snappy. unsetActiveClic k(0xc20947cd90, 0xf, 0xc20947cd00, 0x0, 0x0, 0x0, 0x0) buildd/ ubuntu- snappy- 0.1.2/obj- x86_64- linux-gnu/ src/launchpad. net/snappy/ snappy/ click.go: 1163 +0x1fe net/snappy/ snappy. setActiveClick( 0xc208f302a0, 0xf, 0x0, 0x0, 0x0, 0x0, 0x0) buildd/ ubuntu- snappy- 0.1.2/obj- x86_64- linux-gnu/ src/launchpad. net/snappy/ snappy/ click.go: 1210 +0x1ab net/snappy/ snappy. (*SnapPart) .SetActive( 0xc208f275c0, 0x0, 0x0, 0x0, 0x0) buildd/ ubuntu- snappy- 0.1.2/obj- x86_64- linux-gnu/ src/launchpad. net/snappy/ snappy/ snapp.go: 589 +0x84 net/snappy/ snappy. makeSnapActiveB yNameAndVersion (0x7fff682eb853 , 0x5, 0xc209517d38, 0x3, 0x0, 0x0) buildd/ ubuntu- snappy- 0.1.2/obj- x86_64- linux-gnu/ src/launchpad. net/snappy/ snappy/ parts.go: 332 +0x295 net/snappy/ snappy. Rollback( 0x7fff682eb853, 0x5, 0xc209517d38, 0x3, 0x0, 0x0, 0x0, 0x0) buildd/ ubuntu- snappy- 0.1.2/obj- x86_64- linux-gnu/ src/launchpad. net/snappy/ snappy/ rollback. go:47 +0x295 cmdRollback) .Execute( 0xc208041d00, 0xc208040e60, 0x0, 0x2, 0x0, 0x0) buildd/ ubuntu- snappy- 0.1.2/obj- x86_64- linux-gnu/ src/launchpad. net/snappy/ cmd/snappy/ cmd_rollback. go:60 +0x162 com/jessevdk/ go-flags. (*Parser) .ParseArgs( 0xc20804ae80, 0xc20800e010, 0x2, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0) buildd/ ubuntu- snappy- 0.1.2/obj- x86_64- linux-gnu/ src/github. com/jessevdk/ go-flags/ parser. go:241 +0x7cd com/jessevdk/ go-flags. (*Parser) .Parse( 0xc20804ae80, 0x0, 0x0, 0x0, 0x0, 0x0) buildd/ ubuntu- snappy- 0.1.2/obj- x86_64- linux-gnu/ src/github. com/jessevdk/ go-flags/ parser. go:126 +0xb3 buildd/ ubuntu- snappy- 0.1.2/obj- x86_64- linux-gnu/ src/launchpad. net/snappy/ cmd/snappy/ main.go: 52 +0x2a
runtime.
/usr/lib/
launchpad.
/build/
launchpad.
/build/
launchpad.
/build/
launchpad.
/build/
launchpad.
/build/
launchpad.
/build/
launchpad.
/build/
main.(*
/build/
github.
/build/
github.
/build/
main.main()
/build/
goroutine 19 [finalizer wait]: park(0x420e70, 0xccdf98, 0xcba169) go/src/ pkg/runtime/ proc.c: 1369 +0x89 parkunlock( 0xccdf98, 0xcba169) go/src/ pkg/runtime/ proc.c: 1385 +0x3b go/src/ pkg/runtime/ mgc0.c: 2644 +0xcf go/src/ pkg/runtime/ proc.c: 1445
runtime.
/usr/lib/
runtime.
/usr/lib/
runfinq()
/usr/lib/
runtime.goexit()
/usr/lib/
goroutine 20 [syscall]: go/src/ pkg/os/ signal/ signal_ unix.go: 21 +0x1e go/src/ pkg/os/ signal/ signal_ unix.go: 27 +0x32
os/signal.loop()
/usr/lib/
created by os/signal.init·1
/usr/lib/
goroutine 21 [chan receive]: net/snappy/ partition. func·004( ) buildd/ ubuntu- snappy- 0.1.2/obj- x86_64- linux-gnu/ src/launchpad. net/snappy/ partition/ partition. go:263 +0x4e net/snappy/ partition. setupSignalHand ler buildd/ ubuntu- snapp.. .
launchpad.
/build/
created by launchpad.
/build/