First installation of a snap reports an error "Connection reset by peer"

Bug #1723874 reported by Jean-Baptiste Lallement
22
This bug affects 4 people
Affects Status Importance Assigned to Milestone
snapd-glib (Ubuntu)
Fix Released
High
Robert Ancell
Artful
Fix Committed
High
Unassigned

Bug Description

Test Case
1. On a freshly installed system when snapd has never been used or initialized before (ie core is not installed) open gnome-software
2. Select a snap
3. Install it
4. Wait until it is installed

Actual result
At some point gnome-software reports an error "Installation failed: connection reset by peer"
It was actually installing core, restarted snapd, then the package. But gnome-software reports the error when snapd is restarted, loses the connection to the daemon and does not track the progress of the installation of the snap package

Expected result
It reports the installation of core then the installation of the snap package, or report everything in a single transaction but in any case does not report an error since everything is going as expected.

Attached the changes that are occurring when the first snap is installed on a fresh system

ProblemType: Bug
DistroRelease: Ubuntu 17.10
Package: gnome-software 3.26.1-0ubuntu1
ProcVersionSignature: Ubuntu 4.13.0-15.16-generic 4.13.4
Uname: Linux 4.13.0-15-generic x86_64
ApportVersion: 2.20.7-0ubuntu3
Architecture: amd64
CurrentDesktop: ubuntu:GNOME
Date: Mon Oct 16 09:26:38 2017
InstallationDate: Installed on 2013-09-03 (1503 days ago)
InstallationMedia: Ubuntu 13.10 "Saucy Salamander" - Alpha amd64 (20130902)
InstalledPlugins:
 gnome-software-plugin-flatpak N/A
 gnome-software-plugin-limba N/A
 gnome-software-plugin-snap 3.26.1-0ubuntu1
ProcEnviron:
 TERM=screen-256color
 PATH=(custom, no user)
 XDG_RUNTIME_DIR=<set>
 LANG=fr_FR.UTF-8
 SHELL=/bin/bash
SourcePackage: gnome-software
UpgradeStatus: No upgrade log present (probably fresh install)

Revision history for this message
Jean-Baptiste Lallement (jibel) wrote :
Changed in gnome-software (Ubuntu):
status: New → Triaged
importance: Undecided → High
Will Cooke (willcooke)
Changed in gnome-software (Ubuntu):
assignee: nobody → Robert Ancell (robert-ancell)
Changed in snapd-glib (Ubuntu):
status: New → Triaged
importance: Undecided → High
assignee: nobody → Robert Ancell (robert-ancell)
status: Triaged → In Progress
Revision history for this message
Robert Ancell (robert-ancell) wrote :

@jibel - can you check if this also occurs on older releases? The restarting code seems to have been there for a while, any idea if this is a new issue or has always been there?

Revision history for this message
Robert Ancell (robert-ancell) wrote :

The fix for this will be in snapd-glib, it was never built with the assumption that snapd would restart in the middle of a transaction... This is somewhat tricky to add because we have to be careful for things to fail fast if snapd is not installed, but handle a restart during a transaction (which may never come back).

tags: added: gs-snap
tags: added: gnome-software-snap
removed: gs-snap
Revision history for this message
Robert Ancell (robert-ancell) wrote :

I have yet to test this in a real case but this change should fix this issue:

commit 4014cc5f0c904ea154221fa95a4e12ae90bc811f (HEAD -> master, origin/master, origin/HEAD)
Author: Robert Ancell <email address hidden>
Date: Wed Oct 25 16:52:36 2017 +1300

    Connect to snapd on demand.

    This is required since snapd can restart during an async request (e.g. install).
    We need to reconnect to check the install completed.
    This means snapd_client_connect() now does nothing.

Revision history for this message
Robert Ancell (robert-ancell) wrote :

Fix now in ppa:ubuntu-desktop/gnome-software (snapd-glib 1.24-0ubuntu1~ppa1). For me now I can install on first attempt.

I tested with:
1. Remove existing core snap (removes ALL snaps on your system)
$ sudo apt purge snapd
$ sudo apt install snapd
2. Restart GNOME Software
$ killall gnome-software
3. Install moon-buggy snap

Changed in snapd-glib (Ubuntu):
status: In Progress → Fix Committed
Changed in snapd-glib (Ubuntu Artful):
status: New → Fix Committed
importance: Undecided → High
Changed in snapd-glib (Ubuntu Zesty):
status: New → Invalid
Changed in snapd-glib (Ubuntu Xenial):
status: New → Invalid
Changed in gnome-software (Ubuntu Artful):
status: New → Invalid
no longer affects: gnome-software (Ubuntu Artful)
no longer affects: snapd-glib (Ubuntu Zesty)
no longer affects: snapd-glib (Ubuntu Xenial)
Changed in snapd-glib (Ubuntu Artful):
assignee: nobody → Robert Ancell (robert-ancell)
Changed in gnome-software (Ubuntu Xenial):
importance: Undecided → Medium
Changed in gnome-software (Ubuntu Zesty):
importance: Undecided → Medium
Revision history for this message
Robert Ancell (robert-ancell) wrote :

I re-uploaded as 1.24-0ubuntu0.17.10.1~ppa1 as this is the version number that will be used in the artful SRU.

Revision history for this message
Will Cooke (willcooke) wrote :

Installed as per the instructions and confirming this works as described. Thanks!

Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package snapd-glib - 1.24-0ubuntu1

---------------
snapd-glib (1.24-0ubuntu1) bionic; urgency=medium

  * New upstream release:
    - Fix QSnapd::install() not working async.
    - Move Qt enums to an enum class and rename to avoid collisions (API break).
    - Fix multiple async operations not working at the same time. (LP: #1722183)
    - When async requests are cancelled abort change in snapd. (LP: #1721762)
    - Connect to snapd on demand. (LP: #1723874)
    - Add ability to set snapd socket to connect to.
    - Add support for channels.
    - Fix runtime assertion when snapd socket is NULL.
    - Fix sudoer flag not being correctly set for create-user.
    - Make clients using provided sockets non-blocking.
    - Don't install snapd-qt.pc if not compiling snapd-qt.
  * debian/libsnapd-glib1.symbols:
  * debian/libsnapd-qt1.symbols:
    - Updated

 -- Robert Ancell <email address hidden> Thu, 26 Oct 2017 12:40:05 +1300

Changed in snapd-glib (Ubuntu):
status: Fix Committed → Fix Released
Revision history for this message
Robert Ancell (robert-ancell) wrote :

This appears not to be an issue in Zesty/Xenial since that didn't use snapd-glib and makes a new connection for each request.

no longer affects: gnome-software (Ubuntu)
no longer affects: gnome-software (Ubuntu Xenial)
no longer affects: gnome-software (Ubuntu Zesty)
Changed in snapd-glib (Ubuntu Artful):
assignee: Robert Ancell (robert-ancell) → nobody
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Duplicates of this bug

Other bug subscribers

Remote bug watches

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