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
