Bug 417791 - Snap packages of KDE apps don't work on RHEL 7
Summary: Snap packages of KDE apps don't work on RHEL 7
Status: REOPENED
Alias: None
Product: neon
Classification: KDE Neon
Component: Snaps (show other bugs)
Version: unspecified
Platform: Other Linux
: NOR crash
Target Milestone: ---
Assignee: Scarlett Moore
URL: https://snapcraft.io/kde-frameworks-5...
Keywords: regression, reproducible
Depends on:
Blocks:
 
Reported: 2020-02-17 14:49 UTC by scx.mail
Modified: 2024-01-23 11:40 UTC (History)
6 users (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description scx.mail 2020-02-17 14:49:34 UTC
Snap package of cantor doesn't work on RHEL 7


SUMMARY

The snap package of cantor doesn't work at all on RHEL 7.7.
Fedora 30 is not affected.


STEPS TO REPRODUCE

1. Install the latest version of snapd from the EPEL7 testing repo (tried the latest stable version of snapd from EPEL7 as well): yum --disableplugin='priorities' --enablerepo='epel*' install snap-confine snapd snapd-selinux snappy
2. Create a symlink: sudo ln -s "/var/lib/snapd/snap" "/snap"
3. Install Snap Store: sudo snap install snap-store
4. Install cantor (any version: stable 19.08.0, candidate 19.08.3, beta 17.04.3, edge master+97ffb4e) on RHEL 7.7 via Snap Store.
5. Run "cantor" or "/var/lib/snapd/snap/bin/cantor"


OBSERVED RESULT

$ cantor 
cantor: error while loading shared libraries: libQt5Core.so.5: cannot open shared object file: No such file or directory

$ /var/lib/snapd/snap/bin/cantor
cantor: error while loading shared libraries: libQt5Core.so.5: cannot open shared object file: No such file or directory

$ /snap/bin/cantor 
cantor: error while loading shared libraries: libQt5Core.so.5: cannot open shared object file: No such file or directory

Please note that the snap package of Qalculate works without any problem.


EXPECTED RESULT

Working application.


SOFTWARE/OS VERSIONS

Windows: N/A
macOS: N/A
Linux/KDE Plasma: RHEL 7.7/Linux 3.10.0-1062.9.1.el7.x86_64/snapd: 2.43.3/kde-frameworks-5-core18:kde-frameworks-5-core18-slot
(available in About System)
KDE Plasma Version: N/A
KDE Frameworks Version: N/A
Qt Version: N/A


ADDITIONAL INFORMATION

EL7

$ rpm -q --qf "%{NAME}: %{VERSION}\n" snap-confine snapd snapd-selinux snappy
snap-confine: 2.43.3
snapd: 2.43.3
snapd-selinux: 2.43.3
snappy: 1.1.0

$ which cantor 
/var/lib/snapd/snap/bin/cantor

$ snap connections cantor
Interface                             Plug                          Slot                                                  Notes
content[kde-frameworks-5-core18-all]  cantor:kde-frameworks-5-plug  kde-frameworks-5-core18:kde-frameworks-5-core18-slot  -
dbus                                  -                             cantor:session-dbus-interface                         -
desktop                               cantor:desktop                :desktop                                              -
desktop-legacy                        cantor:desktop-legacy         :desktop-legacy                                       -
home                                  cantor:home                   :home                                                 -
network                               cantor:network                :network                                              -
network-bind                          cantor:network-bind           :network-bind                                         -
opengl                                cantor:opengl                 :opengl                                               -
pulseaudio                            cantor:pulseaudio             :pulseaudio                                           -
unity7                                cantor:unity7                 :unity7                                               -
x11                                   cantor:x11                    :x11                                                  -

$ find /var/lib/snapd/snap/kde-frameworks-5-core18 -xtype f -iname 'libQt5Core.so.5*' 2>/dev/null
/var/lib/snapd/snap/kde-frameworks-5-core18/30/usr/lib/x86_64-linux-gnu/libQt5Core.so.5
/var/lib/snapd/snap/kde-frameworks-5-core18/30/usr/lib/x86_64-linux-gnu/libQt5Core.so.5.12
/var/lib/snapd/snap/kde-frameworks-5-core18/30/usr/lib/x86_64-linux-gnu/libQt5Core.so.5.12.3
/var/lib/snapd/snap/kde-frameworks-5-core18/32/usr/lib/x86_64-linux-gnu/libQt5Core.so.5
/var/lib/snapd/snap/kde-frameworks-5-core18/32/usr/lib/x86_64-linux-gnu/libQt5Core.so.5.12
/var/lib/snapd/snap/kde-frameworks-5-core18/32/usr/lib/x86_64-linux-gnu/libQt5Core.so.5.12.3

$ snap info cantor
name:      cantor
summary:   KDE Frontend to Mathematical Software
publisher: KDEβœ“
store-url: https://snapcraft.io/cantor
contact:   https://bugs.kde.org/enter_bug.cgi?product=neon&component=Snaps
license:   unset
description: |
  Cantor is a front-end to powerful mathematics and statistics packages. Cantor integrates them into
  the KDE Platform and provides a nice, worksheet-based, graphical user interface. It supports
  environments for KAlgebra, Lua, Maxima, R, Sage, Octave, Python, Scilab, and Qalculate!
commands:
  - cantor
snap-id:      VCjprGsSZiPuV3CmQViE4TvPMKTOlaiL
tracking:     latest/stable
refresh-date: today at 12:37 CET
channels:
  stable:    19.08.0        2019-08-15 (48) 161MB -
  candidate: 19.08.3        2019-11-06 (55) 161MB -
  beta:      17.04.3        2017-08-17  (1)  16MB -
  edge:      master+97ffb4e 2019-07-10 (47) 160MB -
installed:   19.08.0                   (48) 161MB -

$ grep -H '' /etc/*release* 2>/dev/null
/etc/os-release:NAME="Red Hat Enterprise Linux Server"
/etc/os-release:VERSION="7.7 (Maipo)"
/etc/os-release:ID="rhel"
/etc/os-release:ID_LIKE="fedora"
/etc/os-release:VARIANT="Server"
/etc/os-release:VARIANT_ID="server"
/etc/os-release:VERSION_ID="7.7"
/etc/os-release:PRETTY_NAME="Red Hat Enterprise Linux"
/etc/os-release:ANSI_COLOR="0;31"
/etc/os-release:CPE_NAME="cpe:/o:redhat:enterprise_linux:7.7:GA:server"
/etc/os-release:HOME_URL="https://www.redhat.com/"
/etc/os-release:BUG_REPORT_URL="https://bugzilla.redhat.com/"
/etc/os-release:
/etc/os-release:REDHAT_BUGZILLA_PRODUCT="Red Hat Enterprise Linux 7"
/etc/os-release:REDHAT_BUGZILLA_PRODUCT_VERSION=7.7
/etc/os-release:REDHAT_SUPPORT_PRODUCT="Red Hat Enterprise Linux"
/etc/os-release:REDHAT_SUPPORT_PRODUCT_VERSION="7.7"
/etc/redhat-release:Red Hat Enterprise Linux Server release 7.7 (Maipo)
/etc/system-release:Red Hat Enterprise Linux Server release 7.7 (Maipo)
/etc/system-release-cpe:cpe:/o:redhat:enterprise_linux:7.7:ga:server
Comment 1 scx.mail 2020-02-17 17:05:24 UTC
See also:
https://bugs.launchpad.net/snapd/+bug/1863642
Comment 2 Jonathan Riddell 2020-02-17 17:20:46 UTC
Do other KDE packages work such as kolourpaint?
Comment 3 Jonathan Riddell 2020-02-17 17:21:37 UTC
What happens if you run 
snap run cantor
Comment 4 scx.mail 2020-02-17 17:40:56 UTC
(In reply to Jonathan Riddell from comment #2)
> Do other KDE packages work such as kolourpaint?

No, kolourpaint is affected as well.

$ /var/lib/snapd/snap/bin/kolourpaint
kolourpaint: error while loading shared libraries: libQt5Core.so.5: cannot open shared object file: No such file or directory

$ /snap/bin/kolourpaint
kolourpaint: error while loading shared libraries: libQt5Core.so.5: cannot open shared object file: No such file or directory

It seems to me that for some reasons snap's "connections" are broken on EL7. Or at least cantor:kde-frameworks-5-plug kde-frameworks-5-core18:kde-frameworks-5-core18-slot doesn't work as expected.

https://bugs.launchpad.net/snapd/+bug/1863642/comments/2
Comment 5 scx.mail 2020-02-17 17:41:23 UTC
(In reply to Jonathan Riddell from comment #3)
> What happens if you run 
> snap run cantor

The same error:
$ snap run cantor
cantor: error while loading shared libraries: libQt5Core.so.5: cannot open shared object file: No such file or directory
Comment 6 scx.mail 2020-02-17 19:44:25 UTC
See also:
https://bugzilla.redhat.com/show_bug.cgi?id=1803954
Comment 7 scx.mail 2020-02-17 20:47:11 UTC
I have an another theory!

Is it possible that the kde-frameworks-5-core18:kde-frameworks-5-core18-slot slot is not mounted because it is not compatible with the system?

Let's look at the Qt5 libs that it provides:
$ find /var/lib/snapd/snap/kde-frameworks-5-core18 -xtype f -iname 'libQt5Core.so.5*' 2>/dev/null | xargs -I{} file '{}'
/var/lib/snapd/snap/kde-frameworks-5-core18/30/usr/lib/x86_64-linux-gnu/libQt5Core.so.5: symbolic link to `libQt5Core.so.5.12.3'
/var/lib/snapd/snap/kde-frameworks-5-core18/30/usr/lib/x86_64-linux-gnu/libQt5Core.so.5.12: symbolic link to `libQt5Core.so.5.12.3'
/var/lib/snapd/snap/kde-frameworks-5-core18/30/usr/lib/x86_64-linux-gnu/libQt5Core.so.5.12.3: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked (uses shared libs), BuildID[sha1]=252fcd9f736251377f96e559b953f9cb4b8fbdec, for GNU/Linux 3.17.0, stripped
/var/lib/snapd/snap/kde-frameworks-5-core18/32/usr/lib/x86_64-linux-gnu/libQt5Core.so.5: symbolic link to `libQt5Core.so.5.12.3'
/var/lib/snapd/snap/kde-frameworks-5-core18/32/usr/lib/x86_64-linux-gnu/libQt5Core.so.5.12: symbolic link to `libQt5Core.so.5.12.3'
/var/lib/snapd/snap/kde-frameworks-5-core18/32/usr/lib/x86_64-linux-gnu/libQt5Core.so.5.12.3: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked (uses shared libs), BuildID[sha1]=2742584b062a7248211733fb8a9365897d2db95a, for GNU/Linux 3.17.0, stripped

As you can see, they are built for Linux 3.17.0. EL7, however, uses Linux 3.10.0-1062 by default (highly modified 3.10.0).
$ uname -r
3.10.0-1062.9.1.el7.x86_64

The best way to check this would be using kernel-lt or kernel-lt from ELRepo.
https://elrepo.org/tiki/kernel-lt
https://elrepo.org/tiki/kernel-ml

Actually, we've already hit a very similar problem with Flatpak in Jan 2019.
https://github.com/flathub/flathub/issues/805
https://bugs.kde.org/show_bug.cgi?id=403042

As you can see, Debian 8 and Ubuntu 14.04 LTS should be affected as well.

Anyway, neither core18, nor cantor itself should be a problem here.
$ file /var/lib/snapd/snap/core18/current/lib/x86_64-linux-gnu/libc-2.27.so 
/var/lib/snapd/snap/core18/current/lib/x86_64-linux-gnu/libc-2.27.so: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked (uses shared libs), BuildID[sha1]=b417c0ba7cc5cf06d1d1bed6652cedb9253c60d0, for GNU/Linux 3.2.0, stripped
$ file /var/lib/snapd/snap/cantor/current/usr/bin/cantor
/var/lib/snapd/snap/cantor/current/usr/bin/cantor: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked (uses shared libs), for GNU/Linux 3.2.0, BuildID[sha1]=7c98f936a4d8ccd35cda1c62e128c9d66e8c16d9, not stripped

As you can see, they are built for Linux 3.2.0.

Qt5, however, may use getentropy, so it requires Linux 3.17.0.
https://code.qt.io/cgit/qt/qtbase.git/tree/src/corelib/global/minimum-linux_p.h?id=4d9ac14bf8d1c1a33a2720c7f7dcaf8d912a592f#n77

However, it should be possible to build Qt5 without this feature.
https://phabricator.kde.org/R257:a029f2957e947f6e32fe8a595edb0ac553654e90

Although I'm not completely sure, I think that rebuilding kde-frameworks-5-core18:kde-frameworks-5-core18-slot without getentropy should enough to fix it.

Can you handle this?
Comment 8 scx.mail 2020-02-17 21:04:06 UTC
Just make sure that Qt5 won't use renameat2 neither, because it requires Linux 3.16.
Comment 9 scx.mail 2020-02-17 23:26:59 UTC
I can confirm that the following snaps are affected:
- kde-frameworks-5-core18
- kde-frameworks-5-core18-sdk
- kde-frameworks-5-qt-5-14-core18
- kde-frameworks-5-qt-5-14-core18-sdk

$ find -L /var/lib/snapd/snap/kde-frameworks-5*/*/usr/lib/*-linux-gnu -type f -iname 'libQt5Core.so*' -print0 2>/dev/null | xargs -0 -I{} file '{}' | grep -Z 'ELF' | grep -Z 'for GNU/Linux ' | sort -z -fuV | grep -Z -Eva 'for GNU/Linux (2\.6\.[0-9]+|3\.2\.0)'
/var/lib/snapd/snap/kde-frameworks-5-core18/30/usr/lib/x86_64-linux-gnu/libQt5Core.so.5.12.3: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked (uses shared libs), BuildID[sha1]=252fcd9f736251377f96e559b953f9cb4b8fbdec, for GNU/Linux 3.17.0, stripped
/var/lib/snapd/snap/kde-frameworks-5-core18/32/usr/lib/x86_64-linux-gnu/libQt5Core.so.5.12.3: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked (uses shared libs), BuildID[sha1]=2742584b062a7248211733fb8a9365897d2db95a, for GNU/Linux 3.17.0, stripped
/var/lib/snapd/snap/kde-frameworks-5-core18/current/usr/lib/x86_64-linux-gnu/libQt5Core.so.5.12.3: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked (uses shared libs), BuildID[sha1]=2742584b062a7248211733fb8a9365897d2db95a, for GNU/Linux 3.17.0, stripped
/var/lib/snapd/snap/kde-frameworks-5-core18-sdk/31/usr/lib/x86_64-linux-gnu/libQt5Core.so.5.12.3: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked (uses shared libs), BuildID[sha1]=2742584b062a7248211733fb8a9365897d2db95a, for GNU/Linux 3.17.0, stripped
/var/lib/snapd/snap/kde-frameworks-5-core18-sdk/current/usr/lib/x86_64-linux-gnu/libQt5Core.so.5.12.3: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked (uses shared libs), BuildID[sha1]=2742584b062a7248211733fb8a9365897d2db95a, for GNU/Linux 3.17.0, stripped
/var/lib/snapd/snap/kde-frameworks-5-qt-5-14-core18/1/usr/lib/x86_64-linux-gnu/libQt5Core.so.5.14.1: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked (uses shared libs), BuildID[sha1]=71f6b46001655493cfef4fabf3a1afdea055f0af, for GNU/Linux 3.17.0, stripped
/var/lib/snapd/snap/kde-frameworks-5-qt-5-14-core18/current/usr/lib/x86_64-linux-gnu/libQt5Core.so.5.14.1: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked (uses shared libs), BuildID[sha1]=71f6b46001655493cfef4fabf3a1afdea055f0af, for GNU/Linux 3.17.0, stripped
/var/lib/snapd/snap/kde-frameworks-5-qt-5-14-core18-sdk/1/usr/lib/x86_64-linux-gnu/libQt5Core.so.5.14.1: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked (uses shared libs), BuildID[sha1]=71f6b46001655493cfef4fabf3a1afdea055f0af, for GNU/Linux 3.17.0, stripped
/var/lib/snapd/snap/kde-frameworks-5-qt-5-14-core18-sdk/current/usr/lib/x86_64-linux-gnu/libQt5Core.so.5.14.1: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked (uses shared libs), BuildID[sha1]=71f6b46001655493cfef4fabf3a1afdea055f0af, for GNU/Linux 3.17.0, stripped

However, kde-frameworks-5 is not affected.

$ find -L /var/lib/snapd/snap/kde-frameworks-5*/*/usr/lib/*-linux-gnu -type f -iname 'libQt5Core.so*' -print0 2>/dev/null | xargs -0 -I{} file '{}' | grep -Z 'ELF' | grep -Z 'for GNU/Linux ' | sort -z -fuV | grep -Z -Ea 'for GNU/Linux (2\.6\.[0-9]+|3\.2\.0)'
/var/lib/snapd/snap/kde-frameworks-5/27/usr/lib/x86_64-linux-gnu/libQt5Core.so.5.11.0: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked (uses shared libs), BuildID[sha1]=5e10a9ca057fb0497637959a6df4d07bfd8e9173, for GNU/Linux 2.6.28, stripped
/var/lib/snapd/snap/kde-frameworks-5/current/usr/lib/x86_64-linux-gnu/libQt5Core.so.5.11.0: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked (uses shared libs), BuildID[sha1]=5e10a9ca057fb0497637959a6df4d07bfd8e9173, for GNU/Linux 2.6.28, stripped
Comment 10 scx.mail 2020-02-17 23:33:25 UTC
(In reply to scx.mail from comment #7)
> Is it possible that the kde-frameworks-5-core18:kde-frameworks-5-core18-slot
> slot is not mounted because it is not compatible with the system?

Actually, it may be mounted and incompatible libs will be still invisible - as if they didn't exist at all.
https://github.com/flathub/flathub/issues/805#issue-397165614
https://bugs.kde.org/show_bug.cgi?id=403042#c0
Comment 11 scx.mail 2020-02-18 03:00:16 UTC
(In reply to Jonathan Riddell from comment #3)

Where is the snap repo for KDE apps (e.g. cantor, kolourpaint, okular, etc.) and runtimes (kde-frameworks-5, kde-frameworks-5-core18, kde-frameworks-5-core18-sdk, kde-frameworks-5-qt-5-14-core18, kde-frameworks-5-qt-5-14-core18-sdk)?
I don't see the snap folder in app repositories.
https://cgit.kde.org/cantor.git/tree/

What is worse, I don't see kde-frameworks-5* repos at all.
Comment 12 Jonathan Riddell 2020-02-18 11:04:46 UTC
Most of the KDE snaps get made in Neon and the snapcraft.yaml files are in neon git branches (all KDE devs have access to these too)
https://packaging.neon.kde.org/kde/kolourpaint.git/tree/?h=Neon/release
https://build.neon.kde.org/view/Snaps/

The kde-frameworks snaps are made with a fairly complex script that downloads and adds Neon .deb packages for Qt and KF5 etc
https://cgit.kde.org/snap-kf5.git/tree/

The Snap devs agree this is a problem and are looking into it.
Comment 13 Ivo Cavalcante 2021-09-06 22:31:22 UTC
Hi all,

Some more Snaps failing on RHEL or RHEL-like version 7 systems, due to this bug. Could you please look into it? It's already been solved in Flatpak, maybe the same solution applies here?

https://github.com/flathub/flathub/issues/805#issuecomment-453004369
Comment 14 Scarlett Moore 2022-10-18 16:10:32 UTC
Can someone with RHEL 7 please test 

https://snapcraft.io/blinken

Much has changed since the last comment.
Thank you
Scarlett
Comment 15 Bug Janitor Service 2022-11-02 05:05:46 UTC
Dear Bug Submitter,

This bug has been in NEEDSINFO status with no change for at least
15 days. Please provide the requested information as soon as
possible and set the bug status as REPORTED. Due to regular bug
tracker maintenance, if the bug is still in NEEDSINFO status with
no change in 30 days the bug will be closed as RESOLVED > WORKSFORME
due to lack of needed information.

For more information about our bug triaging procedures please read the
wiki located here:
https://community.kde.org/Guidelines_and_HOWTOs/Bug_triaging

If you have already provided the requested information, please
mark the bug as REPORTED so that the KDE team knows that the bug is
ready to be confirmed.

Thank you for helping us make KDE software even better for everyone!
Comment 16 Bug Janitor Service 2022-11-17 05:13:03 UTC
This bug has been in NEEDSINFO status with no change for at least
30 days. The bug is now closed as RESOLVED > WORKSFORME
due to lack of needed information.

For more information about our bug triaging procedures please read the
wiki located here:
https://community.kde.org/Guidelines_and_HOWTOs/Bug_triaging

Thank you for helping us make KDE software even better for everyone!
Comment 17 Zygmunt Krynicki 2024-01-23 11:40:15 UTC
Hello, I'm one of the snapd maintainers in Fedora and EPEL.

I just tested several snaps on RHEL 7, running kernel 3.10.0-1160.105.1.el7 with snapd 2.58.3-1.el7 on x86_64 and they all fail on startup due to the use of `clone3` that fails with EPERM. The system call is allowed by the source seccomp profile but is, most likely, not supported by seccomp used in the distribution or by the kernel alike.