Hello community,

here is the log from the commit of package octave for openSUSE:Factory checked 
in at 2020-02-20 14:57:24
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/octave (Old)
 and      /work/SRC/openSUSE:Factory/.octave.new.26092 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "octave"

Thu Feb 20 14:57:24 2020 rev:66 rq:777494 version:5.2.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/octave/octave.changes    2020-02-18 
10:37:29.724588261 +0100
+++ /work/SRC/openSUSE:Factory/.octave.new.26092/octave.changes 2020-02-20 
14:57:37.606552532 +0100
@@ -1,0 +2,11 @@
+Mon Feb 17 13:17:38 UTC 2020 - Stefan BrĂ¼ns <[email protected]>
+
+- Avoid stealing SIGCHLD from QProcess::waitForFinished, which
+  causes the KDE file dialogs to hang up to the 30s default timeout.
+  This only happens when a samba server is installed locally.
+  Fixes https://savannah.gnu.org/bugs/?54607
+  * 0001-Disable-signal-handler-thread-avoid-duplicate-signal.patch
+- Add Xvfb build dependency for make check, several tests fail
+  otherwise.
+
+-------------------------------------------------------------------

New:
----
  0001-Disable-signal-handler-thread-avoid-duplicate-signal.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ octave.spec ++++++
--- /var/tmp/diff_new_pack.8EbB2d/_old  2020-02-20 14:57:40.578558363 +0100
+++ /var/tmp/diff_new_pack.8EbB2d/_new  2020-02-20 14:57:40.578558363 +0100
@@ -62,6 +62,8 @@
 Source3:        octave.macros
 # PATCH-FIX-OPENSUSE
 Patch0:         octave_tools_pie.patch
+# PATCH-FIX-UPSTREAM - https://savannah.gnu.org/bugs/?54607
+Patch1:         0001-Disable-signal-handler-thread-avoid-duplicate-signal.patch
 BuildRequires:  arpack-ng-devel
 # Required for Patch0
 BuildRequires:  autoconf
@@ -112,6 +114,8 @@
 BuildRequires:  pkgconfig(Qt5Network)
 BuildRequires:  pkgconfig(Qt5OpenGL)
 BuildRequires:  pkgconfig(Qt5PrintSupport)
+# testing
+BuildRequires:  xorg-x11-Xvfb
 # boo#1095605
 Requires:       libQt5Sql5-sqlite
 Obsoletes:      octave-gui < 4.0
@@ -208,6 +212,7 @@
 %prep
 %setup -q -n %{name}-%{src_ver}
 %patch0 -p1
+%patch1 -p1
 
 # define octave_blas macros
 sed -i 's/OCTAVE_BLAS_LIBRARY_NAME/%{blas_library}/g' %{SOURCE3}
@@ -272,6 +277,13 @@
 %check
 # Increase stack limits. OpenBLAS tests are run after some JVM test, and 
OpenBLAS
 # dgetrf is quite memory hungry, see 
https://github.com/xianyi/OpenBLAS/issues/246
+
+%define         X_display         ":98"
+export DISPLAY=%{X_display}
+Xvfb %{X_display} >& Xvfb.log &
+trap "kill $! || true" EXIT
+sleep 10
+
 echo "-Xss8m" >  scripts/java/java.opts
 make check
 

++++++ 0001-Disable-signal-handler-thread-avoid-duplicate-signal.patch ++++++
>From f80ba25e3df56e390ee0fa0fea17b2ac1748bfcf Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stefan=20Br=C3=BCns?= <[email protected]>
Date: Mon, 17 Feb 2020 14:12:25 +0100
Subject: [PATCH] Disable signal handler thread, avoid duplicate signal
 handlers

octave::set_signal_handlers installs handlers for a bunch of signals,
while the watcher thread waits for the same signals using sigwait.

As a result, it is unspecified if the signal will be handled in
interrupt context by the thread which installed the handlers, or by
the dedicated thread.

Using sigwait has the side effect of possibly also stealing any signals
from a thread which installs a signal handler later. This is the case
for e.g. QProcess::waitForFinished(), which will likely not receive
a SIGCHLD and run in a timeout. This occurs for the native KDE file
dialog, which will spawn external programs for the CIFS/SAMBA usershare
integration iff a SAMBA server is installed locally.

Note this somewhat reverses the problem for QProcess, as QProcess now
steals the SIGCHLD from octaves main thread, although only for a short
duration until the external process is finished. The latter is solved
with the upcoming Qt 5.15 + Linux 5.3, which no longer relies on
SIGCHLD: https://codereview.qt-project.org/c/qt/qtbase/+/108456/

See also https://bugreports.qt.io/browse/QTBUG-56338

Not using a dedicated signal handler thread removes a source of
indeterminism, and also fixes https://savannah.gnu.org/bugs/?54607
---
 liboctave/wrappers/signal-wrappers.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/liboctave/wrappers/signal-wrappers.c 
b/liboctave/wrappers/signal-wrappers.c
index 90ba890..d838555 100644
--- a/liboctave/wrappers/signal-wrappers.c
+++ b/liboctave/wrappers/signal-wrappers.c
@@ -699,7 +699,7 @@ signal_watcher (void *arg)
 void
 octave_create_interrupt_watcher_thread (octave_sig_handler *handler)
 {
-#if ! defined (__WIN32__)
+#if 0
   pthread_t sighandler_thread_id;
 
   if (pthread_create (&sighandler_thread_id, 0, signal_watcher, handler))
-- 
2.25.0



Reply via email to