Fedora 32 snapcraft fail - `multipass` timeout

Installed everything latest.

Starting snapcraft 4.0.3 from /snap/snapcraft/4814/lib/python3.6/site-packages/snapcraft/cli.
ignoring or passing through unknown parts=OrderedDict([('myip', OrderedDict([('plugin', 'nil'), ('source', '.'), ('override-build', 'pwd\ncp myip.sh $SNAPCRAFT_PART_INSTALL/\n'), ('stage-packages', ['dnsutils'])]))])
Launching a VM.
Project base changed from None to 'core18', cleaning build instance.
Running multipass delete snapcraft-myip --purge
Running multipass launch snapcraft:core18 --name snapcraft-myip --cpus 2 --mem 2G --disk 256G
launch failed: The following errors occurred:                                   
snapcraft-myip: timed out waiting for response
Running multipass stop --time 10 snapcraft-myip                                 
Sorry, an error occurred in Snapcraft:                                          
An error occurred with the instance when trying to launch with 'multipass': returned exit code 2.
Ensure that 'multipass' is setup correctly and try again.
Traceback (most recent call last):
  File "/snap/snapcraft/4814/lib/python3.6/site-packages/snapcraft/internal/build_providers/_multipass/_multipass.py", line 121, in _start
    self._get_instance_info()
  File "/snap/snapcraft/4814/lib/python3.6/site-packages/snapcraft/internal/build_providers/_multipass/_multipass.py", line 236, in _get_instance_info
    instance_name=self.instance_name, output_format="json"
  File "/snap/snapcraft/4814/lib/python3.6/site-packages/snapcraft/internal/build_providers/_multipass/_multipass_command.py", line 410, in info
    stderr=stderr,
snapcraft.internal.build_providers.errors.ProviderInfoError: An error occurred when using 'multipass' to query the status of the instance: returned exit code 2: WARNING: cgroup v2 is not fully supported yet, proceeding with partial confinement
info failed: The following errors occurred:
instance "snapcraft-myip" does not exist
.

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/snap/snapcraft/4814/lib/python3.6/site-packages/snapcraft/internal/build_providers/_base_provider.py", line 234, in launch_instance
    self._start()
  File "/snap/snapcraft/4814/lib/python3.6/site-packages/snapcraft/internal/build_providers/_multipass/_multipass.py", line 128, in _start
    ) from instance_error
snapcraft.internal.build_providers.errors.ProviderInstanceNotFoundError: Cannot find an instance named 'snapcraft-myip'.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/snap/snapcraft/4814/lib/python3.6/site-packages/snapcraft/internal/build_providers/_multipass/_multipass_command.py", line 177, in launch
    _run(cmd)
  File "/snap/snapcraft/4814/lib/python3.6/site-packages/snapcraft/internal/build_providers/_multipass/_multipass_command.py", line 46, in _run
    subprocess.check_call(command, stdin=stdin)
  File "/var/lib/snapd/snap/snapcraft/4814/usr/lib/python3.6/subprocess.py", line 311, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['multipass', 'launch', 'snapcraft:core18', '--name', 'snapcraft-myip', '--cpus', '2', '--mem', '2G', '--disk', '256G']' returned non-zero exit status 2.

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/snap/snapcraft/4814/bin/snapcraft", line 11, in <module>
    load_entry_point('snapcraft==4.0.3', 'console_scripts', 'snapcraft')()
  File "/snap/snapcraft/4814/lib/python3.6/site-packages/click/core.py", line 829, in __call__
    return self.main(*args, **kwargs)
  File "/snap/snapcraft/4814/lib/python3.6/site-packages/click/core.py", line 782, in main
    rv = self.invoke(ctx)
  File "/snap/snapcraft/4814/lib/python3.6/site-packages/click/core.py", line 1236, in invoke
    return Command.invoke(self, ctx)
  File "/snap/snapcraft/4814/lib/python3.6/site-packages/click/core.py", line 1066, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/snap/snapcraft/4814/lib/python3.6/site-packages/click/core.py", line 610, in invoke
    return callback(*args, **kwargs)
  File "/snap/snapcraft/4814/lib/python3.6/site-packages/click/decorators.py", line 21, in new_func
    return f(get_current_context(), *args, **kwargs)
  File "/snap/snapcraft/4814/lib/python3.6/site-packages/snapcraft/cli/_runner.py", line 102, in run
    snap_command.invoke(ctx)
  File "/snap/snapcraft/4814/lib/python3.6/site-packages/snapcraft/cli/_command.py", line 88, in invoke
    return super().invoke(ctx)
  File "/snap/snapcraft/4814/lib/python3.6/site-packages/click/core.py", line 1066, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/snap/snapcraft/4814/lib/python3.6/site-packages/click/core.py", line 610, in invoke
    return callback(*args, **kwargs)
  File "/snap/snapcraft/4814/lib/python3.6/site-packages/snapcraft/cli/lifecycle.py", line 273, in snap
    _execute(steps.PRIME, parts=tuple(), pack_project=True, output=output, **kwargs)
  File "/snap/snapcraft/4814/lib/python3.6/site-packages/snapcraft/cli/lifecycle.py", line 98, in _execute
    project=project, echoer=echo, build_provider_flags=build_provider_flags
  File "/snap/snapcraft/4814/lib/python3.6/site-packages/snapcraft/internal/build_providers/_base_provider.py", line 87, in __enter__
    self.create()
  File "/snap/snapcraft/4814/lib/python3.6/site-packages/snapcraft/internal/build_providers/_multipass/_multipass.py", line 161, in create
    self.launch_instance()
  File "/snap/snapcraft/4814/lib/python3.6/site-packages/snapcraft/internal/build_providers/_base_provider.py", line 242, in launch_instance
    self._launch()
  File "/snap/snapcraft/4814/lib/python3.6/site-packages/snapcraft/internal/build_providers/_multipass/_multipass.py", line 116, in _launch
    image=image,
  File "/snap/snapcraft/4814/lib/python3.6/site-packages/snapcraft/internal/build_providers/_multipass/_multipass_command.py", line 181, in launch
    ) from process_error
snapcraft.internal.build_providers.errors.ProviderLaunchError: An error occurred with the instance when trying to launch with 'multipass': returned exit code 2.
Ensure that 'multipass' is setup correctly and try again.

I’ve got only 8Gb of memory. Could it be the reason that snapcraft + multipass can not complete, because the system is slow?

Can you try and launch a multipass vm instance manually? What gets logged?

The instance is there. Which logs do I need?

✗ multipass list                                                                   
Name                    State             IPv4             Image
snapcraft-myip          Stopped           --               Ubuntu Snapcraft builder for Core 18
✗ multipass launch snapcraft:core18 --name snapcraft-myip --cpus 2 --mem 2G --disk 256G
WARNING: cgroup v2 is not fully supported yet, proceeding with partial confinement
One quick question before we launch … Would you like to help                    
the Multipass developers, by sending anonymous usage data?
This includes your operating system, which images you use,
the number of instances, their properties and how long you use them.
We’d also like to measure Multipass’s speed.

Send usage data (yes/no/Later)? 

:smiley:

Does it launch actually?

After clicking later, no, it does not. Creates and then hangs in Starting state. Then fails.

launch failed: The following errors occurred:                                   
snapcraft-myip: timed out waiting for response

And multipass list shows Unknown state instead of Starting.

✗ multipass list
WARNING: cgroup v2 is not fully supported yet, proceeding with partial confinement
Name                    State             IPv4             Image
snapcraft-myip          Unknown           --               Ubuntu Snapcraft builder for Core 18

Can you grab the journal log of snap.multipass.multipassd.service?

May 27 16:02:57 blackred multipassd[374032]: attempting to release non-existant addr: 52:54:00:34:64:34
May 27 16:10:58 blackred multipassd[374032]: Failed to load AppArmor policy 
                                             #include <tunables/global>
                                             profile multipass.qemu-img flags=(attach_disconnected) {
                                               #include <abstractions/base>
                                             
                                               
                                             
                                               # binary and its libs
                                               /snap/multipass/2101/usr/bin/qemu-img ixr,
                                               /snap/multipass/2101/{usr/,}lib/@{multiarch}/{,**/}*.so* rm,
                                             
                                               # CLASSIC ONLY: need to specify required libs from core snap
                                               /{,var/lib/snapd/}snap/core18/*/{,usr/}lib/@{multiarch}/{,**/}*.so* rm,
                                             
                                               # Subdirectory containing disk image(s)
                                               /var/snap/multipass/common/** rwk,
                                             
                                               # Allow multipassd send qemu-img signals
                                               signal (receive) peer=snap.multipass.multipassd,
                                             }
                                                 : errno=1 ()
May 27 16:10:58 blackred multipassd[374032]: Failed to load AppArmor policy 
                                             #include <tunables/global>
                                             profile multipass.qemu-img flags=(attach_disconnected) {
                                               #include <abstractions/base>
                                             
                                               
                                             
                                               # binary and its libs
                                               /snap/multipass/2101/usr/bin/qemu-img ixr,
                                               /snap/multipass/2101/{usr/,}lib/@{multiarch}/{,**/}*.so* rm,
                                             
                                               # CLASSIC ONLY: need to specify required libs from core snap
                                               /{,var/lib/snapd/}snap/core18/*/{,usr/}lib/@{multiarch}/{,**/}*.so* rm,
                                             
                                               # Subdirectory containing disk image(s)
                                               /var/snap/multipass/common/** rwk,
                                             
                                               # Allow multipassd send qemu-img signals
                                               signal (receive) peer=snap.multipass.multipassd,
                                             }
                                                 : errno=1 ()
May 27 16:10:59 blackred multipassd[374032]: Failed to load AppArmor policy 
                                             #include <tunables/global>
                                             profile multipass.snapcraft-myip.qemu-system-x86_64 flags=(attach_disconnected) {
                                               #include <abstractions/base>
                                               #include <abstractions/consoles>
                                               #include <abstractions/nameservice>
                                             
                                               # required for reading disk images
                                               capability dac_override,
                                               capability dac_read_search,
                                               capability chown,
                                             
                                               # needed to drop privileges
                                               capability setgid,
                                               capability setuid,
                                             
                                               network inet stream,
                                               network inet6 stream,
                                             
                                               # Allow multipassd send qemu signals
                                               signal (receive) peer=snap.multipass.multipassd,
                                             
                                               /dev/net/tun rw,
                                               /dev/kvm rw,
                                               /dev/ptmx rw,
                                               /dev/kqemu rw,
                                               @{PROC}/*/status r,
                                               # When qemu is signaled to terminate, it will read cmdline of signaling
                                               # process for reporting purposes. Allowing read access to a process
                                               # cmdline may leak sensitive information embedded in the cmdline.
                                               @{PROC}/@{pid}/cmdline r,
                                               # Per man(5) proc, the kernel enforces that a thread may
                                               # only modify its comm value or those in its thread group.
                                               owner @{PROC}/@{pid}/task/@{tid}/comm rw,
                                               owner @{PROC}/*/auxv r,
                                               @{PROC}/sys/vm/overcommit_memory r,
                                             
                                               # access to firmware's etc (selectively chosen for multipass' usage)
                                               /snap/multipass/2101/qemu/* r,
                                             
                                               # for save and resume
                                               /{usr/,}bin/dash rmix,
                                               /{usr/,}bin/dd rmix,
                                               /{usr/,}bin/cat rmix,
                                             
                                               # for restore
                                               /{usr/,}bin/bash rmix,
                                             
                                               # for file-posix getting limits since 9103f1ce
                                               /sys/devices/**/block/*/queue/max_segments r,
                                             
                                               # for gathering information about available host resources
                                               /sys/devices/system/cpu/ r,
                                               /sys/devices/system/node/ r,
                                               /sys/devices/system/node/node[0-9]*/meminfo r,
                                               /sys/module/vhost/parameters/max_mem_regions r,
                                             
                                               # binary and its libs
                                               /snap/multipass/2101/usr/bin/qemu-system-x86_64 ixr,
                                               /snap/multipass/2101/{,usr/}lib/{,@{multiarch}/}{,**/}*.so* rm,
                                             
                                               # CLASSIC ONLY: need to specify required libs from core snap
                                               /{,var/lib/snapd/}snap/core18/*/{,usr/}lib/@{multiarch}/{,**/}*.so* rm,
                                             
                                               # Disk images
                                               /var/snap/multipass/common/data/multipassd/vault/instances/snapcraft-myip/ubuntu-18.04-minimal-cloudimg-amd64.img rwk,  # >
                                               /var/snap/multipass/common/data/multipassd/vault/instances/snapcraft-myip/cloud-init-config.iso rk,   # cloud-init ISO
                                             }
                                                 : errno=1 ()
May 27 16:10:59 blackred multipassd[374032]: process working dir '/snap/multipass/2101/qemu'
May 27 16:10:59 blackred multipassd[374032]: process program 'qemu-system-x86_64'
May 27 16:10:59 blackred multipassd[374032]: process arguments '--enable-kvm, -device, virtio-scsi-pci,id=scsi0, -drive, file=/var/snap/multipass/common/data/multipassd/>
May 27 16:10:59 blackred multipassd[374032]: qemu-system-x86_64: warning: TCG doesn't support requested feature: CPUID.01H:ECX.vmx [bit 5]
May 27 16:10:59 blackred multipassd[374032]: process started
May 27 16:10:59 blackred multipassd[374032]: QMP: {"QMP": {"version": {"qemu": {"micro": 1, "minor": 11, "major": 2}, "package": "(Debian 1:2.11+dfsg-1ubuntu7.26)"}, "ca>
May 27 16:10:59 blackred multipassd[374032]: QMP: {"return": {}}
May 27 16:11:04 blackred multipassd[374032]: QMP: {"timestamp": {"seconds": 1590585064, "microseconds": 683020}, "event": "NIC_RX_FILTER_CHANGED", "data": {"name": "net0>

@Saviq anything you can help with?

Hi @abitrolly now we’re in the firewalld territory: multipass#1448. Please let us know if it helps!

The current status of snapcraft on Fedora.

  • multipass doesn’t work, because of the firewalld problem above
  • local LXD doesn’t work, because of the same firewalld problem
  • podman has no problems with firewalld, but snapcraft Python has problem with SELinux

@abitrolly were you unable to change the firewall policies to make either LXD or Multipass work?

Probably because it defaults to creating rootless containers and thus user mode networking. With slirp4netns there’s no real interface in the host network namespace. Instead it creates a tap interface inside the container.

I need to understand security implications before I mess with any system settings that affect the security. It is my primary working station and I am not ready to learn firewall policies. Sorry.