OpenGL/GLFW UI troubles.... I think?

I have spent significant time on snap packaging my app and I am in real need of help. The main problem I am seeing: the snaps I am creating work on my dev machine, and they work in a clean Ubuntu VM IF I install with devmode and dangerous. If I don’t install with those options no UI appears. The UI of the app is all done using GLFW (so, fundamentally opengl). My snapcraft.yaml looks like this:

name: revere
base: core22
version: '0.1.4'
summary: Open source, cross platform ONVIF compatible video surveillance.
description: |
  A free, open source, onvif compatible, cross platform video surveillance system designed to run unobtrusively on standard desktop computers.
grade: stable
confinement: strict

apps:
  revere:
    command: bin/desktop-launch $SNAP/usr/local/revere/revere
    plugs: [process-control, desktop, desktop-legacy, spi, home, network, network-bind, network-status, opengl, unity7, wayland]
  vision:
    command: bin/desktop-launch $SNAP/usr/local/revere/vision
    plugs: [process-control, desktop, desktop-legacy, spi, home, network, network-bind, network-status, opengl, unity7, wayland]

parts:
  revere:
    plugin: cmake
    cmake-parameters:
      - -DCMAKE_BUILD_TYPE=Release
    source-type: git
    source: https://github.com/dicroce/revere
    build-packages:
      - git
      - zip
      - unzip
      - tar
      - cmake
      - pkg-config
      - nasm
      - libxinerama-dev
      - libxcursor-dev
      - xorg-dev
      - libglu1-mesa-dev
      - bison
      - python3-distutils
      - flex
      - libgtk-3-dev
      - libayatana-appindicator3-dev
      - libunwind-dev
      - libcurl4-openssl-dev
      - build-essential
    stage-packages:
      - libcurl4
      - lzip
      - libxinerama1
      - libxcursor1
      - libglu1-mesa
      - libayatana-appindicator3-1
      - libunwind8
      - mesa-utils
      - libglu1-mesa
      - libgl1-mesa-glx
      - libglx0
      - libgl1-mesa-dri
      - xserver-xorg-video-all
    after:
      - desktop-glib-only

  desktop-glib-only:
    source: https://github.com/ubuntu/snapcraft-desktop-helpers.git
    source-subdir: glib-only
    plugin: make
    build-packages:
      - libglib2.0-dev
    stage-packages:
      - libglib2.0-bin

Please, any help at all would be GREATLY appreciated!

Some of those plugs will automatically “connect” (enable), such as home, network, desktop, etc. However others of them won’t, such as process-control, spi, network-bind, etc.

I’m imagining that you may need to run snap connect revere:spi snap connect revere:process-control etc to explicitly grant those interfaces the ability to function.

When/if distributing in the store, you’d be able to apply for those interfaces to be automatically connected so your users don’t have to do the same thing, which is subject to review that essentially tries to determine if those permissions are suitable for your application by default, weighed against user expectations.

In the mean time, I’d encourage you to try sudo snap install snappy-debug, and open snappy debug with a simple snappy-debug in the terminal. In a second shell, try opening your snap, and snappy-debug should (hopefully) offer some some feedback regarding interfaces & etc you may be missing, since it listens out for snap related audit denials whilst you have it open and tries to offer solutions to those problems.

Could you let us know the results snappy-debug provides?

Here are the first 300 or so lines. I’d upload the whole file somewhere if it would be helpful

td@trantor:~/revere$ sudo snappy-debug INFO: Following ‘/var/log/syslog’. If have dropped messages, use: INFO: $ sudo journalctl --output=short --follow --all | sudo snappy-debug kernel.printk_ratelimit = 0 = AppArmor = Time: Dec 1 14:54:10 Log: apparmor=“ALLOWED” operation=“open” class=“file” profile=“snap.revere.revere” name="/mnt/spinning/revere/video/porch.rvd" pid=1017005 comm=“revere” requested_mask=“wr” denied_mask=“wr” fsuid=1000 ouid=1000 File: /mnt/spinning/revere/video/porch.rvd (write) Suggestions:

  • adjust program to write to $SNAP_DATA, $SNAP_COMMON, $SNAP_USER_DATA or $SNAP_USER_COMMON
  • add ‘removable-media’ to ‘plugs’

= AppArmor = Time: Dec 1 14:54:10 Log: apparmor=“ALLOWED” operation=“open” class=“file” profile=“snap.revere.revere” name="/mnt/spinning/revere/video/porch.sdb" pid=1017005 comm=“revere” requested_mask=“wrc” denied_mask=“wrc” fsuid=1000 ouid=1000 File: /mnt/spinning/revere/video/porch.sdb (write) Suggestions:

  • adjust program to write to $SNAP_DATA, $SNAP_COMMON, $SNAP_USER_DATA or $SNAP_USER_COMMON
  • add ‘removable-media’ to ‘plugs’

= AppArmor = Time: Dec 1 14:54:10 Log: apparmor=“ALLOWED” operation=“file_lock” class=“file” profile=“snap.revere.revere” name="/mnt/spinning/revere/video/porch.sdb" pid=1017005 comm=“revere” requested_mask=“k” denied_mask=“k” fsuid=1000 ouid=1000 File: /mnt/spinning/revere/video/porch.sdb (write) Suggestions:

  • adjust program to write to $SNAP_DATA, $SNAP_COMMON, $SNAP_USER_DATA or $SNAP_USER_COMMON
  • add ‘removable-media’ to ‘plugs’

= AppArmor = Time: Dec 1 14:54:10 Log: apparmor=“ALLOWED” operation=“open” class=“file” profile=“snap.revere.revere” name="/mnt/spinning/revere/video/porch.rvd" pid=1017005 comm=“revere” requested_mask=“r” denied_mask=“r” fsuid=1000 ouid=1000 File: /mnt/spinning/revere/video/porch.rvd (read) Suggestions:

  • adjust program to read necessary files from $SNAP, $SNAP_DATA, $SNAP_COMMON, $SNAP_USER_DATA or $SNAP_USER_COMMON
  • add ‘removable-media’ to ‘plugs’

= AppArmor = Time: Dec 1 14:54:10 Log: apparmor=“ALLOWED” operation=“open” class=“file” profile=“snap.revere.revere” name="/mnt/spinning/revere/video/porch.rvd" pid=1017005 comm=“revere” requested_mask=“wr” denied_mask=“wr” fsuid=1000 ouid=1000 File: /mnt/spinning/revere/video/porch.rvd (write) Suggestions:

  • adjust program to write to $SNAP_DATA, $SNAP_COMMON, $SNAP_USER_DATA or $SNAP_USER_COMMON
  • add ‘removable-media’ to ‘plugs’

= AppArmor = Time: Dec 1 14:54:10 Log: apparmor=“ALLOWED” operation=“open” class=“file” profile=“snap.revere.revere” name="/mnt/spinning/revere/video/porch.sdb" pid=1017005 comm=“revere” requested_mask=“wrc” denied_mask=“wrc” fsuid=1000 ouid=1000 File: /mnt/spinning/revere/video/porch.sdb (write) Suggestions:

  • adjust program to write to $SNAP_DATA, $SNAP_COMMON, $SNAP_USER_DATA or $SNAP_USER_COMMON
  • add ‘removable-media’ to ‘plugs’

= AppArmor = Time: Dec 1 14:54:10 Log: apparmor=“ALLOWED” operation=“file_lock” class=“file” profile=“snap.revere.revere” name="/mnt/spinning/revere/video/porch.sdb" pid=1017005 comm=“revere” requested_mask=“k” denied_mask=“k” fsuid=1000 ouid=1000 File: /mnt/spinning/revere/video/porch.sdb (write) Suggestions:

  • adjust program to write to $SNAP_DATA, $SNAP_COMMON, $SNAP_USER_DATA or $SNAP_USER_COMMON
  • add ‘removable-media’ to ‘plugs’

= AppArmor = Time: Dec 1 14:54:10 Log: apparmor=“ALLOWED” operation=“file_lock” class=“file” profile=“snap.revere.revere” name="/mnt/spinning/revere/video/porch.rvd" pid=1017005 comm=“revere” requested_mask=“k” denied_mask=“k” fsuid=1000 ouid=1000 File: /mnt/spinning/revere/video/porch.rvd (write) Suggestions:

  • adjust program to write to $SNAP_DATA, $SNAP_COMMON, $SNAP_USER_DATA or $SNAP_USER_COMMON
  • add ‘removable-media’ to ‘plugs’

= AppArmor = Time: Dec 1 14:54:10 Log: apparmor=“ALLOWED” operation=“open” class=“file” profile=“snap.revere.revere” name="/mnt/spinning/revere/video/porch.sdb" pid=1017005 comm=“revere” requested_mask=“wrc” denied_mask=“wrc” fsuid=1000 ouid=1000 File: /mnt/spinning/revere/video/porch.sdb (write) Suggestions:

  • adjust program to write to $SNAP_DATA, $SNAP_COMMON, $SNAP_USER_DATA or $SNAP_USER_COMMON
  • add ‘removable-media’ to ‘plugs’

= AppArmor = Time: Dec 1 14:54:10 Log: apparmor=“ALLOWED” operation=“file_lock” class=“file” profile=“snap.revere.revere” name="/mnt/spinning/revere/video/porch.sdb" pid=1017005 comm=“revere” requested_mask=“k” denied_mask=“k” fsuid=1000 ouid=1000 File: /mnt/spinning/revere/video/porch.sdb (write) Suggestions:

  • adjust program to write to $SNAP_DATA, $SNAP_COMMON, $SNAP_USER_DATA or $SNAP_USER_COMMON
  • add ‘removable-media’ to ‘plugs’

= Seccomp = Time: Dec 1 14:54:10 Log: auid=1000 uid=1000 gid=1000 ses=2 subj=snap.revere.revere pid=1017005 comm=“revere” exe="/snap/revere/x1/usr/local/revere/revere" sig=0 arch=c000003e 314(sched_setattr) compat=0 ip=0x7f640b375a3d code=0x7ffc0000 Syscall: sched_setattr Suggestion:

  • add ‘process-control’ to ‘plugs’

= AppArmor = Time: Dec 1 14:54:10 Log: apparmor=“ALLOWED” operation=“open” class=“file” profile=“snap.revere.revere” name="/mnt/spinning/revere/video/birds.rvd" pid=1017005 comm=“revere” requested_mask=“wr” denied_mask=“wr” fsuid=1000 ouid=1000 File: /mnt/spinning/revere/video/birds.rvd (write) Suggestions:

  • adjust program to write to $SNAP_DATA, $SNAP_COMMON, $SNAP_USER_DATA or $SNAP_USER_COMMON
  • add ‘removable-media’ to ‘plugs’

= AppArmor = Time: Dec 1 14:54:10 Log: apparmor=“ALLOWED” operation=“open” class=“file” profile=“snap.revere.revere” name="/mnt/spinning/revere/video/birds.sdb" pid=1017005 comm=“revere” requested_mask=“wrc” denied_mask=“wrc” fsuid=1000 ouid=1000 File: /mnt/spinning/revere/video/birds.sdb (write) Suggestions:

  • adjust program to write to $SNAP_DATA, $SNAP_COMMON, $SNAP_USER_DATA or $SNAP_USER_COMMON
  • add ‘removable-media’ to ‘plugs’

= AppArmor = Time: Dec 1 14:54:10 Log: apparmor=“ALLOWED” operation=“file_lock” class=“file” profile=“snap.revere.revere” name="/mnt/spinning/revere/video/birds.sdb" pid=1017005 comm=“revere” requested_mask=“k” denied_mask=“k” fsuid=1000 ouid=1000 File: /mnt/spinning/revere/video/birds.sdb (write) Suggestions:

  • adjust program to write to $SNAP_DATA, $SNAP_COMMON, $SNAP_USER_DATA or $SNAP_USER_COMMON
  • add ‘removable-media’ to ‘plugs’

= AppArmor = Time: Dec 1 14:54:10 Log: apparmor=“ALLOWED” operation=“open” class=“file” profile=“snap.revere.revere” name="/mnt/spinning/revere/video/birds.rvd" pid=1017005 comm=“revere” requested_mask=“r” denied_mask=“r” fsuid=1000 ouid=1000 File: /mnt/spinning/revere/video/birds.rvd (read) Suggestions:

  • adjust program to read necessary files from $SNAP, $SNAP_DATA, $SNAP_COMMON, $SNAP_USER_DATA or $SNAP_USER_COMMON
  • add ‘removable-media’ to ‘plugs’

= AppArmor = Time: Dec 1 14:54:10 Log: apparmor=“ALLOWED” operation=“open” class=“file” profile=“snap.revere.revere” name="/mnt/spinning/revere/video/birds.rvd" pid=1017005 comm=“revere” requested_mask=“wr” denied_mask=“wr” fsuid=1000 ouid=1000 File: /mnt/spinning/revere/video/birds.rvd (write) Suggestions:

  • adjust program to write to $SNAP_DATA, $SNAP_COMMON, $SNAP_USER_DATA or $SNAP_USER_COMMON
  • add ‘removable-media’ to ‘plugs’

= AppArmor = Time: Dec 1 14:54:10 Log: apparmor=“ALLOWED” operation=“open” class=“file” profile=“snap.revere.revere” name="/mnt/spinning/revere/video/birds.sdb" pid=1017005 comm=“revere” requested_mask=“wrc” denied_mask=“wrc” fsuid=1000 ouid=1000 File: /mnt/spinning/revere/video/birds.sdb (write) Suggestions:

  • adjust program to write to $SNAP_DATA, $SNAP_COMMON, $SNAP_USER_DATA or $SNAP_USER_COMMON
  • add ‘removable-media’ to ‘plugs’

= AppArmor = Time: Dec 1 14:54:10 Log: apparmor=“ALLOWED” operation=“file_lock” class=“file” profile=“snap.revere.revere” name="/mnt/spinning/revere/video/birds.sdb" pid=1017005 comm=“revere” requested_mask=“k” denied_mask=“k” fsuid=1000 ouid=1000 File: /mnt/spinning/revere/video/birds.sdb (write) Suggestions:

  • adjust program to write to $SNAP_DATA, $SNAP_COMMON, $SNAP_USER_DATA or $SNAP_USER_COMMON
  • add ‘removable-media’ to ‘plugs’

= AppArmor = Time: Dec 1 14:54:10 Log: apparmor=“ALLOWED” operation=“file_lock” class=“file” profile=“snap.revere.revere” name="/mnt/spinning/revere/video/birds.rvd" pid=1017005 comm=“revere” requested_mask=“k” denied_mask=“k” fsuid=1000 ouid=1000 File: /mnt/spinning/revere/video/birds.rvd (write) Suggestions:

  • adjust program to write to $SNAP_DATA, $SNAP_COMMON, $SNAP_USER_DATA or $SNAP_USER_COMMON
  • add ‘removable-media’ to ‘plugs’

= AppArmor = Time: Dec 1 14:54:10 Log: apparmor=“ALLOWED” operation=“open” class=“file” profile=“snap.revere.revere” name="/mnt/spinning/revere/video/birds.sdb" pid=1017005 comm=“revere” requested_mask=“wrc” denied_mask=“wrc” fsuid=1000 ouid=1000 File: /mnt/spinning/revere/video/birds.sdb (write) Suggestions:

  • adjust program to write to $SNAP_DATA, $SNAP_COMMON, $SNAP_USER_DATA or $SNAP_USER_COMMON
  • add ‘removable-media’ to ‘plugs’

= AppArmor = Time: Dec 1 14:54:10 Log: apparmor=“ALLOWED” operation=“file_lock” class=“file” profile=“snap.revere.revere” name="/mnt/spinning/revere/video/birds.sdb" pid=1017005 comm=“revere” requested_mask=“k” denied_mask=“k” fsuid=1000 ouid=1000 File: /mnt/spinning/revere/video/birds.sdb (write) Suggestions:

  • adjust program to write to $SNAP_DATA, $SNAP_COMMON, $SNAP_USER_DATA or $SNAP_USER_COMMON
  • add ‘removable-media’ to ‘plugs’

= Seccomp = Time: Dec 1 14:54:10 Log: auid=1000 uid=1000 gid=1000 ses=2 subj=snap.revere.revere pid=1017005 comm=“revere” exe="/snap/revere/x1/usr/local/revere/revere" sig=0 arch=c000003e 314(sched_setattr) compat=0 ip=0x7f640b375a3d code=0x7ffc0000 Syscall: sched_setattr Suggestion:

  • add ‘process-control’ to ‘plugs’

= AppArmor = Time: Dec 1 14:54:10 Log: apparmor=“ALLOWED” operation=“open” class=“file” profile=“snap.revere.revere” name="/mnt/spinning/revere/video/driveway.rvd" pid=1017005 comm=“revere” requested_mask=“wr” denied_mask=“wr” fsuid=1000 ouid=1000 File: /mnt/spinning/revere/video/driveway.rvd (write) Suggestions:

  • adjust program to write to $SNAP_DATA, $SNAP_COMMON, $SNAP_USER_DATA or $SNAP_USER_COMMON
  • add ‘removable-media’ to ‘plugs’

= AppArmor = Time: Dec 1 14:54:10 Log: apparmor=“ALLOWED” operation=“open” class=“file” profile=“snap.revere.revere” name="/mnt/spinning/revere/video/driveway.sdb" pid=1017005 comm=“revere” requested_mask=“wrc” denied_mask=“wrc” fsuid=1000 ouid=1000 File: /mnt/spinning/revere/video/driveway.sdb (write) Suggestions:

  • adjust program to write to $SNAP_DATA, $SNAP_COMMON, $SNAP_USER_DATA or $SNAP_USER_COMMON
  • add ‘removable-media’ to ‘plugs’

= AppArmor = Time: Dec 1 14:54:10 Log: apparmor=“ALLOWED” operation=“file_lock” class=“file” profile=“snap.revere.revere” name="/mnt/spinning/revere/video/driveway.sdb" pid=1017005 comm=“revere” requested_mask=“k” denied_mask=“k” fsuid=1000 ouid=1000 File: /mnt/spinning/revere/video/driveway.sdb (write) Suggestions:

  • adjust program to write to $SNAP_DATA, $SNAP_COMMON, $SNAP_USER_DATA or $SNAP_USER_COMMON
  • add ‘removable-media’ to ‘plugs’

= AppArmor = Time: Dec 1 14:54:10 Log: apparmor=“ALLOWED” operation=“open” class=“file” profile=“snap.revere.revere” name="/mnt/spinning/revere/video/driveway.rvd" pid=1017005 comm=“revere” requested_mask=“r” denied_mask=“r” fsuid=1000 ouid=1000 File: /mnt/spinning/revere/video/driveway.rvd (read) Suggestions:

  • adjust program to read necessary files from $SNAP, $SNAP_DATA, $SNAP_COMMON, $SNAP_USER_DATA or $SNAP_USER_COMMON
  • add ‘removable-media’ to ‘plugs’

= AppArmor = Time: Dec 1 14:54:10 Log: apparmor=“ALLOWED” operation=“open” class=“file” profile=“snap.revere.revere” name="/mnt/spinning/revere/video/driveway.rvd" pid=1017005 comm=“revere” requested_mask=“wr” denied_mask=“wr” fsuid=1000 ouid=1000 File: /mnt/spinning/revere/video/driveway.rvd (write) Suggestions:

  • adjust program to write to $SNAP_DATA, $SNAP_COMMON, $SNAP_USER_DATA or $SNAP_USER_COMMON
  • add ‘removable-media’ to ‘plugs’

= AppArmor = Time: Dec 1 14:54:10 Log: apparmor=“ALLOWED” operation=“open” class=“file” profile=“snap.revere.revere” name="/mnt/spinning/revere/video/driveway.sdb" pid=1017005 comm=“revere” requested_mask=“wrc” denied_mask=“wrc” fsuid=1000 ouid=1000 File: /mnt/spinning/revere/video/driveway.sdb (write) Suggestions:

  • adjust program to write to $SNAP_DATA, $SNAP_COMMON, $SNAP_USER_DATA or $SNAP_USER_COMMON
  • add ‘removable-media’ to ‘plugs’

= AppArmor = Time: Dec 1 14:54:10 Log: apparmor=“ALLOWED” operation=“file_lock” class=“file” profile=“snap.revere.revere” name="/mnt/spinning/revere/video/driveway.sdb" pid=1017005 comm=“revere” requested_mask=“k” denied_mask=“k” fsuid=1000 ouid=1000 File: /mnt/spinning/revere/video/driveway.sdb (write) Suggestions:

  • adjust program to write to $SNAP_DATA, $SNAP_COMMON, $SNAP_USER_DATA or $SNAP_USER_COMMON
  • add ‘removable-media’ to ‘plugs’

= AppArmor = Time: Dec 1 14:54:10 Log: apparmor=“ALLOWED” operation=“file_lock” class=“file” profile=“snap.revere.revere” name="/mnt/spinning/revere/video/driveway.rvd" pid=1017005 comm=“revere” requested_mask=“k” denied_mask=“k” fsuid=1000 ouid=1000 File: /mnt/spinning/revere/video/driveway.rvd (write) Suggestions:

  • adjust program to write to $SNAP_DATA, $SNAP_COMMON, $SNAP_USER_DATA or $SNAP_USER_COMMON
  • add ‘removable-media’ to ‘plugs’

= AppArmor = Time: Dec 1 14:54:10 Log: apparmor=“ALLOWED” operation=“open” class=“file” profile=“snap.revere.revere” name="/mnt/spinning/revere/video/driveway.sdb" pid=1017005 comm=“revere” requested_mask=“wrc” denied_mask=“wrc” fsuid=1000 ouid=1000 File: /mnt/spinning/revere/video/driveway.sdb (write) Suggestions:

  • adjust program to write to $SNAP_DATA, $SNAP_COMMON, $SNAP_USER_DATA or $SNAP_USER_COMMON
  • add ‘removable-media’ to ‘plugs’

= AppArmor = Time: Dec 1 14:54:10 Log: apparmor=“ALLOWED” operation=“file_lock” class=“file” profile=“snap.revere.revere” name="/mnt/spinning/revere/video/driveway.sdb" pid=1017005 comm=“revere” requested_mask=“k” denied_mask=“k” fsuid=1000 ouid=1000 File: /mnt/spinning/revere/video/driveway.sdb (write) Suggestions:

  • adjust program to write to $SNAP_DATA, $SNAP_COMMON, $SNAP_USER_DATA or $SNAP_USER_COMMON
  • add ‘removable-media’ to ‘plugs’

= Seccomp = Time: Dec 1 14:54:10 Log: auid=1000 uid=1000 gid=1000 ses=2 subj=snap.revere.revere pid=1017005 comm=“revere” exe="/snap/revere/x1/usr/local/revere/revere" sig=0 arch=c000003e 314(sched_setattr) compat=0 ip=0x7f640b375a3d code=0x7ffc0000 Syscall: sched_setattr Suggestion:

  • add ‘process-control’ to ‘plugs’

= Seccomp = Time: Dec 1 14:54:11 Log: auid=1000 uid=1000 gid=1000 ses=2 subj=snap.revere.revere pid=1017005 comm=“task0” exe="/snap/revere/x1/usr/local/revere/revere" sig=0 arch=c000003e 314(sched_setattr) compat=0 ip=0x7f640b375a3d code=0x7ffc0000 Syscall: sched_setattr Suggestion:

  • add ‘process-control’ to ‘plugs’

= Seccomp = Time: Dec 1 14:54:11 Log: auid=1000 uid=1000 gid=1000 ses=2 subj=snap.revere.revere pid=1017005 comm=“task1” exe="/snap/revere/x1/usr/local/revere/revere" sig=0 arch=c000003e 314(sched_setattr) compat=0 ip=0x7f640b375a3d code=0x7ffc0000 Syscall: sched_setattr Suggestion:

  • add ‘process-control’ to ‘plugs’

= Seccomp = Time: Dec 1 14:54:11 Log: auid=1000 uid=1000 gid=1000 ses=2 subj=snap.revere.revere pid=1017005 comm=“task0” exe="/snap/revere/x1/usr/local/revere/revere" sig=0 arch=c000003e 314(sched_setattr) compat=0 ip=0x7f640b375a3d code=0x7ffc0000 Syscall: sched_setattr Suggestion:

  • add ‘process-control’ to ‘plugs’

= Seccomp = Time: Dec 1 14:54:11 Log: auid=1000 uid=1000 gid=1000 ses=2 subj=snap.revere.revere pid=1017005 comm=“task1” exe="/snap/revere/x1/usr/local/revere/revere" sig=0 arch=c000003e 314(sched_setattr) compat=0 ip=0x7f640b375a3d code=0x7ffc0000 Syscall: sched_setattr Suggestion:

  • add ‘process-control’ to ‘plugs’

= Seccomp = Time: Dec 1 14:54:11 Log: auid=1000 uid=1000 gid=1000 ses=2 subj=snap.revere.revere pid=1017005 comm=“task0” exe="/snap/revere/x1/usr/local/revere/revere" sig=0 arch=c000003e 314(sched_setattr) compat=0 ip=0x7f640b375a3d code=0x7ffc0000 Syscall: sched_setattr Suggestion:

  • add ‘process-control’ to ‘plugs’

Also, this run is on my dev machine… installed with --devmode and --dangerous. Did you want the output from the VM where the UI doesn’t open?

I guess first of all he wanted you to read the suggestions snappy-debug made :wink:

How about adding the process-control plug to your app (and connecting it indeed) and if you prefer to use your videos from a place in /mnt like above adding (and connecting) removable-media would also be a good idea…

After these changes try it again on the system where it did not work before to see if the issue is solved… (indeed do not install in --devmode for testing) … if it still does not work, run snappy-debug there too and watch any suggestions it has…

Well, i believe it already has the process-control plug listed in the snapcraft file (see above)? When you say “adding the process-control plug to your app” what do you mean exactly?

Regarding the /mnt issue… The app writes the video to a subdirectory of your users Documents folder… It just happens that on this machine I have symlinked that directory over to another drive (for space reasons). Ok, so it might need “removable-media” if the user has a symlink over to another drive? That’s odd because /mnt is not ONLY for removable media. In my case, I am symlinked over to another hard drive.

So, I tried the following commands, and the gui for the app appears now.

td@ub22:~$ snap connect revere:spi
error: snap "snapd" has no "spi" interface slots
td@ub22:~$ snap connect revere:process-control
td@ub22:~$ snap connect revere:network-bind

So, how do I request approval from the snap store for process-control and network-bind?

Upload the working snap to the store (preferably unlisted until it’s all properly bootstrapped). Once it’s uploaded create a thread in the store-requests subforum asking.

E.G here’s one I did myself that required both a review but also publisher vetting (for higher capability permissions, which process-control likely counts as).

What this actually does is append a signed assertion to the snap download process that verifies that Canonical/Snapcraft reviewers approve the permission being enabled by default. Since this is linked to the store download mechanism, it doesn’t work when installing using --dangerous and for your own testing needs, you’d need to remember to connect plugs explicitly even if your users don’t.

I spent some time this morning trying to figure out why my app needs “process-control”… The snappy-debug output shows that its the “sched_setattr” call that needs “process-control”… I am not using that call directly… I suspect it must be coming from either gstreamer or ffmpeg… but I haven’t totally narrowed it down yet.

Thank you for your help with this. I at least understand what’s wrong now and have a path forward.