Can't install snaps in clean 16.04 lxd container

I frequently spin up clean lxd containers in which to build software. Today (maybe started before today, but certainly today) it’s broken. I can’t install core inside a 16.04 clean lxd container.

# snap version
snap    2.27.5
snapd   2.27.5
series  16
ubuntu  16.04
kernel  5.0.0-34-generic
# snap install node --classic --channel=12/stable
error: cannot perform the following tasks:
- Mount snap "core" (8039) ([start snap-core-8039.mount] failed with exit status 1: Job for snap-core-8039.mount failed. See "systemctl status snap-core-8039.mount" and "journalctl -xe" for details.
)
root@signal-desktop-20191114-082626:~# journalxtl -xe
No command 'journalxtl' found, did you mean:
 Command 'journalctl' from package 'systemd' (main)
journalxtl: command not found
root@signal-desktop-20191114-082626:~# systemctl status snap-core-8039.mount
● snap-core-8039.mount - Mount unit for core
   Loaded: loaded (/etc/systemd/system/snap-core-8039.mount; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Thu 2019-11-14 08:32:01 UTC; 27s ago
    Where: /snap/core/8039
     What: /var/lib/snapd/snaps/core_8039.snap
  Process: 1019 ExecMount=/bin/mount /var/lib/snapd/snaps/core_8039.snap /snap/core/8039 -t squashfs -o nodev,ro (code=exited, status=32)

Nov 14 08:32:01 signal-desktop-20191114-082626 systemd[1]: Mounting Mount unit for core...
Nov 14 08:32:01 signal-desktop-20191114-082626 mount[1019]: mount: /snap/core/8039: mount failed: Unknown error -1
Nov 14 08:32:01 signal-desktop-20191114-082626 systemd[1]: snap-core-8039.mount: Mount process exited, code=exited status=32
Nov 14 08:32:01 signal-desktop-20191114-082626 systemd[1]: Failed to mount Mount unit for core.
Nov 14 08:32:01 signal-desktop-20191114-082626 systemd[1]: snap-core-8039.mount: Unit entered failed state.

Host is 19.10, lxd is installed from snap, stable channel.

Can you run this line manually?

If that fails, try adding LIBMOUNT_DEBUG=all LOOPDEV_DEBUG=all in the environment.

#     /bin/mount /var/lib/snapd/snaps/core_8039.snap /snap/core/8039 -t squashfs -o nodev,ro
mount: /snap/core/8039: mount failed: Unknown error -1
# LIBMOUNT_DEBUG=all LOOPDEV_DEBUG=all /bin/mount /var/lib/snapd/snaps/core_8039.snap /snap/core/8039 -t squashfs -o nodev,ro
1223: libmount:     INIT: library debug mask: 0xffff
1223: libmount:     INIT: library version: 2.27.0
1223: libmount:     INIT:     feature: selinux
1223: libmount:     INIT:     feature: assert
1223: libmount:     INIT:     feature: debug
Available "LIBMOUNT_DEBUG=<name>[,...]|<mask>" debug masks:
   all      [0xffff] : info about all subsystems
   cache    [0x0004] : paths and tags cache
   cxt      [0x0200] : library context (handler)
   diff     [0x0400] : mountinfo changes tracking
   fs       [0x0040] : FS abstraction
   help     [0x0001] : this help
   locks    [0x0010] : mtab and utab locking
   options  [0x0008] : mount options parsing
   tab      [0x0020] : fstab, mtab, mounninfo routines
   update   [0x0080] : mtab, utab updates
   utils    [0x0100] : misc library utils
   monitor  [0x0800] : mount tables monitor
1223: libmount:      CXT: [0xa3f050]: ----> allocate 
1223: libmount:      CXT: [0xa3f050]: mount: preparing
1223: libmount:      CXT: [0xa3f050]: use default optsmode
1223: libmount:      CXT: [0xa3f050]: OPTSMODE: ignore=0, append=0, prepend=1, replace=0, force=0, fstab=1, mtab=1
1223: libmount:      CXT: [0xa3f050]: fstab not required -- skip
1223: libmount:      CXT: [0xa3f050]: merging mount flags
1223: libmount:      CXT: [0xa3f050]: final flags: VFS=00000005 user=00000000
1223: libmount:      CXT: [0xa3f050]: mount: evaluating permissions
1223: libmount:      CXT: [0xa3f050]: mount: fixing optstr
1223: libmount:      CXT: [0xa3f050]: mount: fixing vfs optstr
1223: libmount:      CXT: applying 0x00000005 flags to 'nodev,ro'
1223: libmount:      CXT: new optstr 'ro,nodev'
1223: libmount:      CXT: [0xa3f050]: mount: fixing user optstr
1223: libmount:      CXT: applying 0x00000000 flags to '(null)'
1223: libmount:      CXT: new optstr '(null)'
1223: libmount:      CXT: [0xa3f050]: fixed options [rc=0]: vfs: 'ro,nodev' fs: '(null)' user: '(null)', optstr: 'ro,nodev'
1223: libmount:      CXT: [0xa3f050]: preparing source path
1223: libmount:      CXT: [0xa3f050]: srcpath '/var/lib/snapd/snaps/core_8039.snap'
1223: libmount:    CACHE: [0xa3f2e0]: alloc
1223: libmount:    CACHE: [0xa3f2e0]: canonicalize path /var/lib/snapd/snaps/core_8039.snap
1223: libmount:    CACHE: [0xa3f2e0]: add entry [ 1] (path): /var/lib/snapd/snaps/core_8039.snap: /var/lib/snapd/snaps/core_8039.snap
1223: libmount:      CXT: [0xa3f050]: automatically enabling loop= option
1223: libmount:      CXT: [0xa3f050]: trying to setup loopdev for /var/lib/snapd/snaps/core_8039.snap
1223: libmount:      CXT: [0xa3f050]: enabling READ-ONLY flag
1223: loopdev:      CXT: [0x7ffd67546450]: initialize context
1223: loopdev:      CXT: [0x7ffd67546450]: init: ignore ioctls
1223: libmount:      TAB: [0xa40f40]: alloc
1223: libmount:      TAB: [0xa40f40]: mtab parse: ignore /etc/mtab
1223: libmount:      TAB: [0xa40f40]: mtab parse: #1 read mountinfo
1223: libmount:      TAB: [0xa40f40]: /proc/self/mountinfo: start parsing [entries=0, filter=not]
1223: libmount:      TAB: [0xa40f40]: add entry: default/containers/signal-desktop-20191114-082626 /
1223: libmount:    CACHE: canonicalize path /proc/self/mountinfo
1223: libmount:      TAB: TID for /proc/self/mountinfo is 1223
1223: libmount:      TAB: [0xa40f40]: add entry: none /dev
1223: libmount:      TAB: [0xa40f40]: add entry: proc /proc
1223: libmount:      TAB: [0xa40f40]: add entry: sysfs /sys
1223: libmount:      TAB: [0xa40f40]: add entry: udev /dev/fuse
1223: libmount:      TAB: [0xa40f40]: add entry: udev /dev/net/tun
1223: libmount:      TAB: [0xa40f40]: add entry: binfmt_misc /proc/sys/fs/binfmt_misc
1223: libmount:      TAB: [0xa40f40]: add entry: fusectl /sys/fs/fuse/connections
1223: libmount:      TAB: [0xa40f40]: add entry: pstore /sys/fs/pstore
1223: libmount:      TAB: [0xa40f40]: add entry: debugfs /sys/kernel/debug
1223: libmount:      TAB: [0xa40f40]: add entry: securityfs /sys/kernel/security
1223: libmount:      TAB: [0xa40f40]: add entry: mqueue /dev/mqueue
1223: libmount:      TAB: [0xa40f40]: add entry: tmpfs /dev/lxd
1223: libmount:      TAB: [0xa40f40]: add entry: tmpfs /dev/.lxd-mounts
1223: libmount:      TAB: [0xa40f40]: add entry: lxcfs /proc/cpuinfo
1223: libmount:      TAB: [0xa40f40]: add entry: lxcfs /proc/diskstats
1223: libmount:      TAB: [0xa40f40]: add entry: lxcfs /proc/loadavg
1223: libmount:      TAB: [0xa40f40]: add entry: lxcfs /proc/meminfo
1223: libmount:      TAB: [0xa40f40]: add entry: lxcfs /proc/stat
1223: libmount:      TAB: [0xa40f40]: add entry: lxcfs /proc/swaps
1223: libmount:      TAB: [0xa40f40]: add entry: lxcfs /proc/uptime
1223: libmount:      TAB: [0xa40f40]: add entry: lxcfs /sys/devices/system/cpu/online
1223: libmount:      TAB: [0xa40f40]: add entry: lxcfs /var/lib/lxcfs
1223: libmount:      TAB: [0xa40f40]: add entry: udev /dev/full
1223: libmount:      TAB: [0xa40f40]: add entry: udev /dev/null
1223: libmount:      TAB: [0xa40f40]: add entry: udev /dev/random
1223: libmount:      TAB: [0xa40f40]: add entry: udev /dev/tty
1223: libmount:      TAB: [0xa40f40]: add entry: udev /dev/urandom
1223: libmount:      TAB: [0xa40f40]: add entry: udev /dev/zero
1223: libmount:      TAB: [0xa40f40]: add entry: devpts /dev/console
1223: libmount:      TAB: [0xa40f40]: add entry: none /proc/sys/kernel/random/boot_id
1223: libmount:      TAB: [0xa40f40]: add entry: devpts /dev/pts
1223: libmount:      TAB: [0xa40f40]: add entry: devpts /dev/ptmx
1223: libmount:      TAB: [0xa40f40]: add entry: tmpfs /dev/shm
1223: libmount:      TAB: [0xa40f40]: add entry: tmpfs /run
1223: libmount:      TAB: [0xa40f40]: add entry: tmpfs /run/lock
1223: libmount:      TAB: [0xa40f40]: add entry: tmpfs /sys/fs/cgroup
1223: libmount:      TAB: [0xa40f40]: add entry: cgroup /sys/fs/cgroup/systemd
1223: libmount:      TAB: [0xa40f40]: add entry: cgroup /sys/fs/cgroup/net_cls,net_prio
1223: libmount:      TAB: [0xa40f40]: add entry: cgroup /sys/fs/cgroup/pids
1223: libmount:      TAB: [0xa40f40]: add entry: cgroup /sys/fs/cgroup/blkio
1223: libmount:      TAB: [0xa40f40]: add entry: cgroup /sys/fs/cgroup/devices
1223: libmount:      TAB: [0xa40f40]: add entry: cgroup /sys/fs/cgroup/hugetlb
1223: libmount:      TAB: [0xa40f40]: add entry: cgroup /sys/fs/cgroup/memory
1223: libmount:      TAB: [0xa40f40]: add entry: cgroup /sys/fs/cgroup/perf_event
1223: libmount:      TAB: [0xa40f40]: add entry: cgroup /sys/fs/cgroup/freezer
1223: libmount:      TAB: [0xa40f40]: add entry: cgroup /sys/fs/cgroup/rdma
1223: libmount:      TAB: [0xa40f40]: add entry: cgroup /sys/fs/cgroup/cpuset
1223: libmount:      TAB: [0xa40f40]: add entry: cgroup /sys/fs/cgroup/cpu,cpuacct
1223: libmount:      TAB: [0xa40f40]: add entry: tmpfs /run/user/0
1223: libmount:       FS: [0xa4ca70]: free [refcount=0]
1223: libmount:      TAB: [0xa40f40]: /proc/self/mountinfo: stop parsing (50 entries)
1223: libmount:      TAB: [0xa40f40]: parsing done [filename=/proc/self/mountinfo, rc=0]
1223: libmount:      TAB: [0xa40f40]: mtab parse: #2 read utab
1223: libmount:      CXT: [0xa3f050]: mtab requested [nents=50]
1223: libmount:      CXT: [0xa3f050]: checking if /var/lib/snapd/snaps/core_8039.snap mounted on /snap/core/8039
1223: libmount:    CACHE: [0xa3f2e0]: canonicalize path /snap/core/8039
1223: libmount:    CACHE: [0xa3f2e0]: add entry [ 2] (path): /snap/core/8039: /snap/core/8039
1223: libmount:      CXT: [0xa3f050]: enabling AUTOCLEAR flag
1223: loopdev:      CXT: [0x7ffd67546450]: find_unused requested
1223: loopdev:     ITER: [0x7ffd67546608]: initialize
1223: loopdev:     ITER: [0x7ffd67546608]: next
1223: loopdev:     ITER: [0x7ffd67546608]: next: default check
1223: loopdev:      CXT: [0x7ffd67546450]: loop0 name assigned
1223: loopdev:     ITER: [0x7ffd67546608]: /dev/loop0 does not exist
1223: loopdev:      CXT: [0x7ffd67546450]: loop1 name assigned
1223: loopdev:     ITER: [0x7ffd67546608]: /dev/loop1 does not exist
1223: loopdev:      CXT: [0x7ffd67546450]: loop2 name assigned
1223: loopdev:     ITER: [0x7ffd67546608]: /dev/loop2 does not exist
1223: loopdev:      CXT: [0x7ffd67546450]: loop3 name assigned
1223: loopdev:     ITER: [0x7ffd67546608]: /dev/loop3 does not exist
1223: loopdev:      CXT: [0x7ffd67546450]: loop4 name assigned
1223: loopdev:     ITER: [0x7ffd67546608]: /dev/loop4 does not exist
1223: loopdev:      CXT: [0x7ffd67546450]: loop5 name assigned
1223: loopdev:     ITER: [0x7ffd67546608]: /dev/loop5 does not exist
1223: loopdev:      CXT: [0x7ffd67546450]: loop6 name assigned
1223: loopdev:     ITER: [0x7ffd67546608]: /dev/loop6 does not exist
1223: loopdev:      CXT: [0x7ffd67546450]: loop7 name assigned
1223: loopdev:     ITER: [0x7ffd67546608]: /dev/loop7 does not exist
1223: loopdev:     ITER: [0x7ffd67546608]: next: scanning /dev
1223: loopdev:     ITER: scan dir: /dev/
1223: loopdev:     ITER: [0x7ffd67546608]: de-initialize
1223: loopdev:     ITER: [0x7ffd67546608]: de-initialize
1223: loopdev:      CXT: [0x7ffd67546450]: find_unused by scan [rc=1]
1223: loopdev:      CXT: [0x7ffd67546450]: de-initialize
1223: loopdev:     ITER: [0x7ffd67546608]: de-initialize
1223: libmount:      CXT: [0xa3f050]: mount: preparing failed
mount: /snap/core/8039: mount failed: Unknown error -1
1223: libmount:      CXT: [0xa3f050]: <---- reset [status=0] ---->
1223: libmount:       FS: [0xa3f150]: free [refcount=0]
1223: libmount:      TAB: [0xa40f40]: reset
1223: libmount:       FS: [0xa411d0]: free [refcount=0]
1223: libmount:       FS: [0xa41ab0]: free [refcount=0]
1223: libmount:       FS: [0xa41dc0]: free [refcount=0]
1223: libmount:       FS: [0xa42140]: free [refcount=0]
1223: libmount:       FS: [0xa424c0]: free [refcount=0]
1223: libmount:       FS: [0xa42840]: free [refcount=0]
1223: libmount:       FS: [0xa42bc0]: free [refcount=0]
1223: libmount:       FS: [0xa42f40]: free [refcount=0]
1223: libmount:       FS: [0xa432c0]: free [refcount=0]
1223: libmount:       FS: [0xa43640]: free [refcount=0]
1223: libmount:       FS: [0xa439f0]: free [refcount=0]
1223: libmount:       FS: [0xa43dc0]: free [refcount=0]
1223: libmount:       FS: [0xa44190]: free [refcount=0]
1223: libmount:       FS: [0xa44540]: free [refcount=0]
1223: libmount:       FS: [0xa44910]: free [refcount=0]
1223: libmount:       FS: [0xa44cb0]: free [refcount=0]
1223: libmount:       FS: [0xa45050]: free [refcount=0]
1223: libmount:       FS: [0xa453f0]: free [refcount=0]
1223: libmount:       FS: [0xa45790]: free [refcount=0]
1223: libmount:       FS: [0xa45b30]: free [refcount=0]
1223: libmount:       FS: [0xa45ed0]: free [refcount=0]
1223: libmount:       FS: [0xa46270]: free [refcount=0]
1223: libmount:       FS: [0xa46610]: free [refcount=0]
1223: libmount:       FS: [0xa469b0]: free [refcount=0]
1223: libmount:       FS: [0xa46d50]: free [refcount=0]
1223: libmount:       FS: [0xa470f0]: free [refcount=0]
1223: libmount:       FS: [0xa47490]: free [refcount=0]
1223: libmount:       FS: [0xa47830]: free [refcount=0]
1223: libmount:       FS: [0xa47bd0]: free [refcount=0]
1223: libmount:       FS: [0xa47f70]: free [refcount=0]
1223: libmount:       FS: [0xa482f0]: free [refcount=0]
1223: libmount:       FS: [0xa48670]: free [refcount=0]
1223: libmount:       FS: [0xa48a50]: free [refcount=0]
1223: libmount:       FS: [0xa48e30]: free [refcount=0]
1223: libmount:       FS: [0xa491b0]: free [refcount=0]
1223: libmount:       FS: [0xa49530]: free [refcount=0]
1223: libmount:       FS: [0xa49910]: free [refcount=0]
1223: libmount:       FS: [0xa49c90]: free [refcount=0]
1223: libmount:       FS: [0xa4a010]: free [refcount=0]
1223: libmount:       FS: [0xa4a390]: free [refcount=0]
1223: libmount:       FS: [0xa4a710]: free [refcount=0]
1223: libmount:       FS: [0xa4aa90]: free [refcount=0]
1223: libmount:       FS: [0xa4ae10]: free [refcount=0]
1223: libmount:       FS: [0xa4b190]: free [refcount=0]
1223: libmount:       FS: [0xa4b510]: free [refcount=0]
1223: libmount:       FS: [0xa4b890]: free [refcount=0]
1223: libmount:       FS: [0xa4bc10]: free [refcount=0]
1223: libmount:       FS: [0xa4bf90]: free [refcount=0]
1223: libmount:       FS: [0xa4c310]: free [refcount=0]
1223: libmount:       FS: [0xa4c690]: free [refcount=0]
1223: libmount:      TAB: [0xa40f40]: free [refcount=0]
1223: libmount:    CACHE: [0xa3f2e0]: free [refcount=0]
1223: libmount:      CXT: [0xa3f050]: <---- free

Thanks. This is actually correct, since we’re in container. If there was a persistent problem with mounting snaps, it would have been caught by sanity checks and snap installs would fail right away.

Can you check the following please:

  • ls -l /dev/fuse
  • is /usr/bin/snapfuse present?
  • the output of systemd-detect-virt --container, should be lxc

You may also try to mount the snap using snapfuse like so:

mount /var/lib/snapd/snaps/core_8039.snap /snap/core/8039 -t fuse.snapfuse -o nodev,ro
# ls -l /dev/fuse
crw-rw-rw- 1 nobody nogroup 10, 229 Nov 14 08:26 /dev/fuse
# ls /usr/bin/snapfuse
ls: cannot access '/usr/bin/snapfuse': No such file or directory
# systemd-detect-virt --container
lxc
# mount /var/lib/snapd/snaps/core_8039.snap /snap/core/8039 -t fuse.snapfuse -o nodev,ro
/bin/sh: 1: snapfuse: not found

Does squashfuse exist at least?

Btw. I’ve launched the container locally using the latest ubuntu:16.04 LXD image, whcih came with snapd 2.40.

So it looks like my lxc container is outdated, but I don’t know how this worked last week but no longer does.

I ended up nuking my lxd install and reset it, because I was in a hurry, sorry. So can’t debug further.