diff mbox series

[bug#37725] gnu: lxqt-config: Add libkscreen as propagated-inputs.

Message ID 0204dc81-bfad-4efb-a88a-5f90e00678aa@www.fastmail.com
State Accepted
Headers show
Series [bug#37725] gnu: lxqt-config: Add libkscreen as propagated-inputs. | expand

Commit Message

Hamzeh Nasajpour Oct. 13, 2019, 4:23 a.m. UTC
* gnu/packages/lxqt.scm (lxqt-config): Remove libkscreen from native-inputs to propagated-inputs for running the lxqt-config-monitor.
---
 gnu/packages/lxqt.scm | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Ludovic Courtès Oct. 13, 2019, 10:07 p.m. UTC | #1
Hi,

"Hamzeh Nasajpour" <h.nasajpour@pantherx.org> skribis:

> * gnu/packages/lxqt.scm (lxqt-config): Remove libkscreen from native-inputs to propagated-inputs for running the lxqt-config-monitor.

In general, when adding a propagated input, could you add a comment in
the code itself explaining why it’s this way?

In this particular case, is the ‘lxqt-config-monitor’ command part of
libkscreen?  Could we avoid propagation somehow?

Thanks,
Ludo’.
Hamzeh Nasajpour Oct. 14, 2019, 5:50 a.m. UTC | #2
Hi, 

The problem is crashing the `lxqt-config-monitor` when I want to run it(`segmentation fault`). I installed the `libkscreen` and the problem was resolved. So I change the `lxqt-config` package definition and remove the `libkscreen` from `inputs` to `propagated-inputs`, install it and everything was ok.

Regards,
Hamzeh.

On Mon, Oct 14, 2019, at 1:37 AM, Ludovic Courtès wrote:
> Hi,
> 
> "Hamzeh Nasajpour" <h.nasajpour@pantherx.org> skribis:
> 
> > * gnu/packages/lxqt.scm (lxqt-config): Remove libkscreen from native-inputs to propagated-inputs for running the lxqt-config-monitor.
> 
> In general, when adding a propagated input, could you add a comment in
> the code itself explaining why it’s this way?
> 
> In this particular case, is the ‘lxqt-config-monitor’ command part of
> libkscreen?  Could we avoid propagation somehow?
> 
> Thanks,
> Ludo’.
>
Ludovic Courtès Oct. 14, 2019, 8:21 p.m. UTC | #3
Hi Hamzeh,

"Hamzeh Nasajpour" <h.nasajpour@pantherx.org> skribis:

> The problem is crashing the `lxqt-config-monitor` when I want to run it(`segmentation fault`). I installed the `libkscreen` and the problem was resolved. So I change the `lxqt-config` package definition and remove the `libkscreen` from `inputs` to `propagated-inputs`, install it and everything was ok.

Do you have a simple ‘operating-system’ configuration and instructions
we could follow to reproduce the initial problem?

Thanks in advance,
Ludo’.
Reza Alizadeh Majd Oct. 16, 2019, 11:18 a.m. UTC | #4
Hi, 

maybe I could describe better about this patch file.

`libkscreen`  is used by `lxqt-config-monitor` to modify
the desktop resolution in LXQt desktop. 

the problem is that, during execution of `lxqt-config-monitor` 
application crashes with "segmentation fault". 

we had a review over `lxqt-config-monitor` source code, 
but didn't find any unusual usage of `ksceen` library. just 
a normal link during build process and binaries were made 
successfully. 

this issue might because of crash inside `libkscreen`, but we
didn't  review that yet. 

so as a quick workaround we find that adding the `libkscreen`
as a propagated input could fix this issue.

--
Regards
Reza Alizadeh Majd
PantherX Team
Ludovic Courtès Oct. 18, 2019, 9:54 a.m. UTC | #5
Hi Reza,

"Reza Alizadeh Majd" <r.majd@pantherx.org> skribis:

> maybe I could describe better about this patch file.
>
> `libkscreen`  is used by `lxqt-config-monitor` to modify
> the desktop resolution in LXQt desktop. 
>
> the problem is that, during execution of `lxqt-config-monitor` 
> application crashes with "segmentation fault". 
>
> we had a review over `lxqt-config-monitor` source code, 
> but didn't find any unusual usage of `ksceen` library. just 
> a normal link during build process and binaries were made 
> successfully. 
>
> this issue might because of crash inside `libkscreen`, but we
> didn't  review that yet. 
>
> so as a quick workaround we find that adding the `libkscreen`
> as a propagated input could fix this issue.

Thanks for explaining, I understand better now.

I think that it’s not satisfying to apply a workaround that we don’t
understand.  That is, intuitively, I see now reason why propagating
libkscreen would “fix” a segfault.

Could you either (1) provide an ‘operating-system’ config and
instructions to reproduce the problem, or (2) grab a backtrace of the
segfaulted program with GDB?

Let us know if you need guidance.

Thanks,
Ludo’.
Reza Alizadeh Majd Oct. 18, 2019, 4:44 p.m. UTC | #6
Hi Ludo, 

Sure, here is a minimal operating system configuration that we used for a
minimal LXQt desktop on Guix:

```
(use-modules (gnu) (gnu system nss) (gnu packages kde-plasma))
(use-service-modules desktop networking ssh sddm dbus)
(use-package-modules ssh certs tls lxqt xorg)

(operating-system
  (host-name "panther")
  (timezone "Asia/Tehran")
  (locale "en_US.utf8")

  ;; Boot in "legacy" BIOS mode
  (bootloader (bootloader-configuration
                (bootloader grub-bootloader)
                (target "/dev/sda")))
  (file-systems (cons (file-system
                        (device (file-system-label "my-root"))
                        (mount-point "/")
                        (type "ext4"))
                      %base-file-systems))
  (users (cons (user-account
                (name "user")
                (password "1234")
                (group "users")
                (supplementary-groups '("wheel" "audio" "video"))
                (home-directory "/home/user"))
               %base-user-accounts))
  (packages (cons* openssh nss-certs gnutls 
                   lxqt lxqt-globalkeys
                   
                   ;; commented in order to re-produce the issue
                   ; libkscreen   
                   %base-packages))
  (services (cons*
	      (sddm-service
		    (sddm-configuration
		      (minimum-uid 1000)
		      (theme "elarun")))
	      (elogind-service)
	      (udisks-service)
	      (dbus-service)
	      (colord-service)
	      (service polkit-service-type)
	      (service upower-service-type)
	      (service dhcp-client-service-type)
	      ;; network configuration
	      (service openssh-service-type
		       (openssh-configuration
			 (port-number 22)
			 (permit-root-login #t)
			 (authorized-keys
			   `(("panther" ,(local-file "/etc/vagrant.pub"))
			     ("root" ,(local-file "/etc/vagrant.pub"))))))
	      (service wpa-supplicant-service-type)
	      %base-services))
  ;; Allow resolution of '.local' host names with mDNS.
  (name-service-switch %mdns-host-lookup-nss))
```  
  
the issue occurs when I try to execute `lxqt-config-monitor`.


here is also the GDB backtrace log that I received during application crash:

```
root@panther /home/panther# cat monitor.txt 
Starting program: /gnu/store/k09wlkkmllwyr5d41bzn2mn9kvylgszr-profile/bin/lxqt-config-monitor 
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/gnu/store/h90vnqw0nwd0hhm1l5dgxsdrigddfmq4-glibc-2.28/lib/libthread_db.so.1".
[New Thread 0x7ffff3bfb700 (LWP 860)]
[New Thread 0x7ffff32d4700 (LWP 861)]
[Detaching after fork from child process 862]
[New Thread 0x7fffea615700 (LWP 863)]
[New Thread 0x7fffe9e14700 (LWP 864)]
[New Thread 0x7fffe9613700 (LWP 865)]
[New Thread 0x7fffe8e12700 (LWP 866)]

Thread 1 "lxqt-config-mon" received signal SIGSEGV, Segmentation fault.
0x00007ffff7fa1b01 in KScreen::GetConfigOperation::start() ()
   from /gnu/store/ds7ib4ndgy48ac0hxrrsgc6xc4lsccva-libkscreen-5.15.1/lib/libKF5Screen.so.7
#0  0x00007ffff7fa1b01 in KScreen::GetConfigOperation::start() ()
   from /gnu/store/ds7ib4ndgy48ac0hxrrsgc6xc4lsccva-libkscreen-5.15.1/lib/libKF5Screen.so.7
#1  0x00007ffff7fbe48d in KScreen::ConfigOperation::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) ()
   from /gnu/store/ds7ib4ndgy48ac0hxrrsgc6xc4lsccva-libkscreen-5.15.1/lib/libKF5Screen.so.7
#2  0x00007ffff6f28ad1 in QObject::event(QEvent*) () from /gnu/store/ahyi57vlk48cmzsvxjwhxlxg2fdhxl9w-qtbase-5.11.3/lib/libQt5Core.so.5
#3  0x00007ffff788214c in QApplicationPrivate::notify_helper(QObject*, QEvent*) ()
   from /gnu/store/ahyi57vlk48cmzsvxjwhxlxg2fdhxl9w-qtbase-5.11.3/lib/libQt5Widgets.so.5
#4  0x00007ffff7889280 in QApplication::notify(QObject*, QEvent*) ()
   from /gnu/store/ahyi57vlk48cmzsvxjwhxlxg2fdhxl9w-qtbase-5.11.3/lib/libQt5Widgets.so.5
#5  0x00007ffff6efd4f8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) ()
   from /gnu/store/ahyi57vlk48cmzsvxjwhxlxg2fdhxl9w-qtbase-5.11.3/lib/libQt5Core.so.5
#6  0x00007ffff6efff2b in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) ()
   from /gnu/store/ahyi57vlk48cmzsvxjwhxlxg2fdhxl9w-qtbase-5.11.3/lib/libQt5Core.so.5
#7  0x00007ffff6f51643 in ?? () from /gnu/store/ahyi57vlk48cmzsvxjwhxlxg2fdhxl9w-qtbase-5.11.3/lib/libQt5Core.so.5
#8  0x00007ffff43ddb57 in g_main_context_dispatch () from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/lib/libglib-2.0.so.0
#9  0x00007ffff43ddd98 in g_main_context_iterate.isra () from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/lib/libglib-2.0.so.0
#10 0x00007ffff43dde3c in g_main_context_iteration () from /gnu/store/cgy82g6yv8l1chawgch47zh23b0jll3l-glib-2.56.3/lib/libglib-2.0.so.0
#11 0x00007ffff6f50caf in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) ()
   from /gnu/store/ahyi57vlk48cmzsvxjwhxlxg2fdhxl9w-qtbase-5.11.3/lib/libQt5Core.so.5
#12 0x00007ffff3deb3c1 in ?? ()
   from /gnu/store/ahyi57vlk48cmzsvxjwhxlxg2fdhxl9w-qtbase-5.11.3/lib/qt5/plugins/platforms/../../../libQt5XcbQpa.so.5
#13 0x00007ffff6efbe4a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) ()
   from /gnu/store/ahyi57vlk48cmzsvxjwhxlxg2fdhxl9w-qtbase-5.11.3/lib/libQt5Core.so.5
#14 0x00007ffff6f04740 in QCoreApplication::exec() () from /gnu/store/ahyi57vlk48cmzsvxjwhxlxg2fdhxl9w-qtbase-5.11.3/lib/libQt5Core.so.5
#15 0x000000000040f92c in main ()
Quit
quit

```

Best, 
Reza



On Fri, Oct 18, 2019, at 1:24 PM, Ludovic Courtès wrote:
> Hi Reza,
> 
> "Reza Alizadeh Majd" <r.majd@pantherx.org> skribis:
> 
> > maybe I could describe better about this patch file.
> >
> > `libkscreen`  is used by `lxqt-config-monitor` to modify
> > the desktop resolution in LXQt desktop. 
> >
> > the problem is that, during execution of `lxqt-config-monitor` 
> > application crashes with "segmentation fault". 
> >
> > we had a review over `lxqt-config-monitor` source code, 
> > but didn't find any unusual usage of `ksceen` library. just 
> > a normal link during build process and binaries were made 
> > successfully. 
> >
> > this issue might because of crash inside `libkscreen`, but we
> > didn't  review that yet. 
> >
> > so as a quick workaround we find that adding the `libkscreen`
> > as a propagated input could fix this issue.
> 
> Thanks for explaining, I understand better now.
> 
> I think that it’s not satisfying to apply a workaround that we don’t
> understand.  That is, intuitively, I see now reason why propagating
> libkscreen would “fix” a segfault.
> 
> Could you either (1) provide an ‘operating-system’ config and
> instructions to reproduce the problem, or (2) grab a backtrace of the
> segfaulted program with GDB?
> 
> Let us know if you need guidance.
> 
> Thanks,
> Ludo’.
>
Hamzeh Nasajpour April 2, 2020, 7:17 p.m. UTC | #7
Hi Ludo,

Have we any conclusion here? _Reza_ sent a configuration and backtrace.

Regards,
Hamzeh

On Mon, Oct 14, 2019, at 11:51 PM, Ludovic Courtès wrote:
> Hi Hamzeh,
> 
> "Hamzeh Nasajpour" <h.nasajpour@pantherx.org> skribis:
> 
> > The problem is crashing the `lxqt-config-monitor` when I want to run it(`segmentation fault`). I installed the `libkscreen` and the problem was resolved. So I change the `lxqt-config` package definition and remove the `libkscreen` from `inputs` to `propagated-inputs`, install it and everything was ok.
> 
> Do you have a simple ‘operating-system’ configuration and instructions
> we could follow to reproduce the initial problem?
> 
> Thanks in advance,
> Ludo’.
>
Ludovic Courtès April 22, 2020, 3:50 p.m. UTC | #8
Hi Reza,

Sorry for the very late reply.

"Reza Alizadeh Majd" <r.majd@pantherx.org> skribis:

> Sure, here is a minimal operating system configuration that we used for a
> minimal LXQt desktop on Guix:

I added a window manager to the global profile so that I could actually
log in, but then I don’t even know how to get a terminal…  I think I’m
not well positioned to further debug this.  Did you discuss it with
upstream?

Thanks,
Ludo’.
(use-modules (gnu) (gnu system nss) (gnu packages kde-plasma))
(use-service-modules desktop networking ssh sddm dbus)
(use-package-modules ssh certs tls lxqt xorg openbox)

(operating-system
  (host-name "panther")
  (timezone "Asia/Tehran")
  (locale "en_US.utf8")

  ;; Boot in "legacy" BIOS mode
  (bootloader (bootloader-configuration
                (bootloader grub-bootloader)
                (target "/dev/sda")))
  (file-systems (cons (file-system
                        (device (file-system-label "my-root"))
                        (mount-point "/")
                        (type "ext4"))
                      %base-file-systems))
  (users (cons (user-account
                (name "user")
                (password (crypt "1234" "$6$abc"))
                (group "users")
                (supplementary-groups '("wheel" "audio" "video"))
                (home-directory "/home/user"))
               %base-user-accounts))
  (packages (cons* openssh nss-certs gnutls 
                   lxqt lxqt-globalkeys openbox
                   
                   ;; commented in order to re-produce the issue
                   ; libkscreen   
                   %base-packages))
  (services (cons*
	      (sddm-service
		    (sddm-configuration
		      (minimum-uid 1000)
		      (theme "elarun")))
	      (elogind-service)
	      (udisks-service)
	      (dbus-service)
	      (colord-service)
	      (service polkit-service-type)
	      (service upower-service-type)
	      (service dhcp-client-service-type)
	      ;; network configuration
	      (service openssh-service-type
		       (openssh-configuration
			 (port-number 22)
			 (permit-root-login #t)))
	      (service wpa-supplicant-service-type)
	      %base-services))
  ;; Allow resolution of '.local' host names with mDNS.
  (name-service-switch %mdns-host-lookup-nss))
Efraim Flashner April 27, 2020, 4:39 p.m. UTC | #9
On Thu, Apr 02, 2020 at 11:47:04PM +0430, Hamzeh Nasajpour wrote:
> 
> Hi Ludo,
> 
> Have we any conclusion here? _Reza_ sent a configuration and backtrace.
> 
> Regards,
> Hamzeh
> 
> On Mon, Oct 14, 2019, at 11:51 PM, Ludovic Courtès wrote:
> > Hi Hamzeh,
> > 
> > "Hamzeh Nasajpour" <h.nasajpour@pantherx.org> skribis:
> > 
> > > The problem is crashing the `lxqt-config-monitor` when I want to run it(`segmentation fault`). I installed the `libkscreen` and the problem was resolved. So I change the `lxqt-config` package definition and remove the `libkscreen` from `inputs` to `propagated-inputs`, install it and everything was ok.
> > 
> > Do you have a simple ‘operating-system’ configuration and instructions
> > we could follow to reproduce the initial problem?
> > 
> > Thanks in advance,
> > Ludo’.
> >

I did some investigating myself and I think there's a regression in
qtbase somewhere.

guix environment --ad-hoc strace libkscreen lxqt-config -- strace -o ~/lxqt-config-monitor.strace lxqt-config-monitor
QApplication: invalid style override passed, ignoring it.
    Available styles: Windows, Fusion
 (0x7ffc74134b40) Warning: "Icon Theme not set. Fallbacking to Oxygen, if installed"
 (0x7ffc74134b40) Warning: "Fallback Icon Theme (Oxygen) not found"

And no lxqt-config-monitor loaded. I've attached the strace, but it
shows it looking for the kscreen directory in qtbase/lib/qt5/plugins/kf5/kscreen
and lxqt-config/bin/kf5/kscreen. For the record it's in
libkscreen/lib/qt5/plugins/kf5/kscreen
diff mbox series

Patch

diff --git a/gnu/packages/lxqt.scm b/gnu/packages/lxqt.scm
index e5487d3ae4..a3c796d9e8 100644
--- a/gnu/packages/lxqt.scm
+++ b/gnu/packages/lxqt.scm
@@ -367,7 +367,6 @@  the operating system LXQt is running on.")
     (inputs
      `(("eudev" ,eudev)
        ("kwindowsystem" ,kwindowsystem)
-       ("libkscreen" ,libkscreen)
        ("liblxqt" ,liblxqt)
        ("libqtxdg" ,libqtxdg)
        ("libxcursor" ,libxcursor)
@@ -382,6 +381,8 @@  the operating system LXQt is running on.")
      `(("pkg-config" ,pkg-config)
        ("lxqt-build-tools" ,lxqt-build-tools)
        ("qttools" ,qttools)))
+    (propagated-inputs
+     `(("libkscreen" ,libkscreen)))
     (arguments
      '(#:tests? #f                      ; no tests
        #:phases