[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#864067: unblock: plasma-workspace/5.8.6-2.1



Package: release.debian.org
Severity: normal
User: release.debian.org@packages.debian.org
Usertags: unblock

Hi,

I want to upload a NMU of plasma-workspace to unstable fixing an issue 
where processing stopped in ksplashqml on some environments(e.g. Japanese
environment), proposed patch attached.

unblock plasma-workspace/5.8.6-2.1.

-- System Information:
Debian Release: 9.0
  APT prefers unstable
  APT policy: (500, 'unstable'), (1, 'experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: armhf, armel, sh4, powerpc

Kernel: Linux 4.9.0-1-amd64 (SMP w/4 CPU cores)
Locale: LANG=ja_JP.utf8, LC_CTYPE=ja_JP.utf8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)
diff -Nru plasma-workspace-5.8.6/debian/changelog plasma-workspace-5.8.6/debian/changelog
--- plasma-workspace-5.8.6/debian/changelog	2017-03-16 03:45:10.000000000 +0900
+++ plasma-workspace-5.8.6/debian/changelog	2017-06-02 22:17:22.000000000 +0900
@@ -1,3 +1,12 @@
+plasma-workspace (4:5.8.6-2.1) unstable; urgency=medium
+
+  * Non-maintainer upload.
+  * Fix problem where processing stopped in ksplashqml on some environments.
+    (Closes: #862558)
+    Add patches/replace-fds.patch.
+
+ -- Nobuhiro Iwamatsu <iwamatsu@debian.org>  Fri, 02 Jun 2017 22:17:22 +0900
+
 plasma-workspace (4:5.8.6-2) unstable; urgency=medium
 
   * Release to unstable
diff -Nru plasma-workspace-5.8.6/debian/patches/replace-fds.patch plasma-workspace-5.8.6/debian/patches/replace-fds.patch
--- plasma-workspace-5.8.6/debian/patches/replace-fds.patch	1970-01-01 09:00:00.000000000 +0900
+++ plasma-workspace-5.8.6/debian/patches/replace-fds.patch	2017-06-02 22:17:22.000000000 +0900
@@ -0,0 +1,122 @@
+Description: Not close stdin,stdout,stderr, and redirects stdin,stdout,stderr to /dev/null
+ This fix a bug in ksplashqml. An upstream commit
+ https://cgit.kde.org/plasma-workspace.git/commit/?id=56d2c15b9acb9c4b57398b281685807c3191f622
+ has caused this problem.
+
+ x-session-manag,133,kdetest /usr/bin/x-session-manager
+   +-(ksplashqml,232)
+   +-ssh-agent,191 /usr/bin/im-launch x-session-manager
+   +-uim-toolbar,220
+   |   +-{llvmpipe-0},235
+   |   +-{llvmpipe-1},236
+   |   +-{llvmpipe-2},237
+   |   `-{llvmpipe-3},238
+   `-uim-xim,219
+ ksplashqml,233,kdetest Breeze --pid
+   +-mozc_server,239
+   |   +-{IPCServer},244
+   |   +-{QueueTimer},240
+   |   +-{QueueTimer},243
+   |   `-{WatchDog},242
+   +-uim-candwin-qt5,245 -v
+   |   +-{QDBusConnection},249
+   |   `-{QXcbEventReader},248
+   |-{QDBusConnection},255
+   |-{QQmlThread},254
+   |-{QXcbEventReader},234
+   |-{llvmpipe-0},250
+   |-{llvmpipe-1},251
+   |-{llvmpipe-2},252
+   `-{llvmpipe-3},253
+ 
+ # strace -f -p 133
+ strace: Process 133 attached
+ read(3, ^Cstrace: Process 133 detached
+  <detached ...>
+ 
+ It looks like the parent process (133), x-session-manager (startkde
+ script), is waiting for the stdout of the ksplashqml process (232),
+ but which is now defunct. Its child process(es) may be writing to the
+ same fd.
+ 
+ # ls -l /proc/133/fd/3
+ lr-x------ 1 kdetest kdetest 64 May 31 05:13 /proc/133/fd/3 -> pipe:[88694]
+ 
+ The direct child of the ksplashqml process (233), the splash screen daemon,
+ closes the file descriptor at ksplash/ksplashqml/main.cpp:97.
+ 
+ # ls -l /proc/233/fd/1
+ ls: cannot access '/proc/233/fd/1': No such file or directory
+ 
+ One of the children of the process (239), mozc_server, is holding the fd:
+ 
+ # ls -l /proc/239/fd/1
+ l-wx------ 1 kdetest kdetest 64 May 31 05:14 /proc/239/fd/1 -> pipe:[88694]
+ 
+ So the startkde process has finished reading the pid number string from
+ the now-defunct process, but is still waiting for another write(s) until
+ the (shared) fd has been closed.
+ 
+ This mozc_server process has been started during uim-qt5
+ (a QPlatformInputContext) startup in the SplashApp
+ initialization phase at ksplash/ksplashqml/main.cpp:92.
+ 
+ Due to the upstream commit the splash screen daemon does not close file
+ descriptors before the SplashApp initialization, thus its subprocess
+ shares the fds.
+ 
+ The commit log states Wayland initialization of this daemon needs the
+ channels. While it may require open file descriptors 0, 1 or 2,
+ no one should expect the process to talk to the parent through the
+ descriptors, since the splash screen is a daemon.
+ 
+ An attached patch reverts the commit and redirects the file descriptors
+ to /dev/null.
+Forwarded: https://bugs.kde.org/show_bug.cgi?id=380495
+Bug-Debian: https://bugs.debian.org/862558
+Author: YOSHINO Yoshihito <yy.y.ja.jp@gmail.com>
+Last-Update: 2017-06-02
+
+--- plasma-workspace-5.8.6.orig/ksplash/ksplashqml/main.cpp
++++ plasma-workspace-5.8.6/ksplash/ksplashqml/main.cpp
+@@ -24,6 +24,9 @@
+ #include <QTextStream>
+ 
+ #include <iostream>
++#include <sys/types.h>
++#include <sys/stat.h>
++#include <fcntl.h>
+ #include <unistd.h>
+ 
+ void logMessageHandler(QtMsgType type, const char *msg)
+@@ -83,6 +86,16 @@ int main(int argc, char **argv)
+ 
+             return 0;
+         }
++
++        int devNull = open("/dev/null", O_RDWR);
++        if (devNull == -1) {
++            return -1;
++        }
++        // replace stdin,stdout,stderr, otherwise startkde will block
++        dup2(devNull, 0);
++        dup2(devNull, 1);
++        dup2(devNull, 2);
++        close(devNull);
+     }
+ 
+     //enable to send log output to /tmp/ksplash
+@@ -91,13 +104,6 @@ int main(int argc, char **argv)
+     QQuickWindow::setDefaultAlphaBuffer(true);
+     SplashApp app(argc, argv);
+ 
+-    if (!test && !nofork) {
+-        // close stdin,stdout,stderr, otherwise startkde will block
+-        close(0);
+-        close(1);
+-        close(2);
+-    }
+-
+     return app.exec();
+ }
+ 
diff -Nru plasma-workspace-5.8.6/debian/patches/series plasma-workspace-5.8.6/debian/patches/series
--- plasma-workspace-5.8.6/debian/patches/series	2017-03-16 03:45:10.000000000 +0900
+++ plasma-workspace-5.8.6/debian/patches/series	2017-06-02 22:17:08.000000000 +0900
@@ -1,3 +1,4 @@
 kubuntu_startkde-qtpath.diff
 disable_incompatible_tests
 add_sddm_debian_breeze.patch
+replace-fds.patch

Reply to: