[SCM] qtbase packaging branch, master, updated. debian/5.7.1+dfsg-2-4-g58baa9a

Dmitry Shachnev mitya57 at moszumanska.debian.org
Sun Jan 8 19:45:16 UTC 2017


Gitweb-URL: http://git.debian.org/?p=pkg-kde/qt/qtbase.git;a=commitdiff;h=58baa9a

The following commit has been merged in the master branch:
commit 58baa9a0675e462cf2c4eca52c2c41fa6089d520
Author: Dmitry Shachnev <mitya57 at gmail.com>
Date:   Wed Jan 4 23:13:28 2017 +0300

    Backport upstream change to fix crashes on exit in some applications.
    
    This is the first part of a fix for bug #845662.
---
 debian/changelog                          |  2 +
 debian/patches/bearer_qfactoryloader.diff | 62 +++++++++++++++++++++++++++++++
 debian/patches/series                     |  1 +
 3 files changed, 65 insertions(+)

diff --git a/debian/changelog b/debian/changelog
index 7d4749d..4634313 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -4,6 +4,8 @@ qtbase-opensource-src (5.7.1+dfsg-3) UNRELEASED; urgency=medium
   * Backport upstream change to fix accessibility-related crashes
     (fix_accessibility_crash.diff; closes: #834750).
   * Backport upstream fix to make QGtk3Dialog not crash on Wayland.
+  * Backport upstream change to make the bearer QFactoryLoader a member
+    variable (bearer_qfactoryloader.diff).
 
  -- Debian Qt/KDE Maintainers <debian-qt-kde at lists.debian.org>  Wed, 04 Jan 2017 22:39:02 +0300
 
diff --git a/debian/patches/bearer_qfactoryloader.diff b/debian/patches/bearer_qfactoryloader.diff
new file mode 100644
index 0000000..2c355cd
--- /dev/null
+++ b/debian/patches/bearer_qfactoryloader.diff
@@ -0,0 +1,62 @@
+Description: make the bearer QFactoryLoader a member variable, not a static
+ Because it was a function-level static, the QFactoryLoader was getting
+ destroyed out-of-sync with the bearer thread stopping. Under normal
+ conditions, the thread stopped first (~QApplication / ~QCoreApplication
+ via qAddPostRoutine), and the static got destroyed when the process
+ exited. However, if QApplication leaked or if the destruction order is
+ wonky (as seen in PyQt5), the thread could still be running when the
+ plugins were already unloaded.
+ .
+ With the loader a member variable, it gets destroyed when the thread
+ stops.
+Origin: upstream, https://code.qt.io/cgit/qt/qtbase.git/commit/?id=7c402ad3d15ff5e7
+Last-Update: 2017-01-04
+
+--- a/src/network/bearer/qnetworkconfigmanager_p.cpp
++++ b/src/network/bearer/qnetworkconfigmanager_p.cpp
+@@ -40,8 +40,6 @@
+ #include "qnetworkconfigmanager_p.h"
+ #include "qbearerplugin_p.h"
+ 
+-#include <QtCore/private/qfactoryloader_p.h>
+-
+ #include <QtCore/qdebug.h>
+ #include <QtCore/qtimer.h>
+ #include <QtCore/qstringlist.h>
+@@ -60,7 +58,9 @@
+ QT_BEGIN_NAMESPACE
+ 
+ QNetworkConfigurationManagerPrivate::QNetworkConfigurationManagerPrivate()
+-    : QObject(), pollTimer(0), mutex(QMutex::Recursive), forcedPolling(0), firstUpdate(true)
++    : QObject(), pollTimer(0), mutex(QMutex::Recursive),
++      loader(QBearerEngineFactoryInterface_iid, QLatin1String("/bearer")),
++      forcedPolling(0), firstUpdate(true)
+ {
+     qRegisterMetaType<QNetworkConfiguration>();
+     qRegisterMetaType<QNetworkConfigurationPrivatePointer>();
+@@ -365,7 +365,6 @@
+         bool envOK  = false;
+         const int skipGeneric = qEnvironmentVariableIntValue("QT_EXCLUDE_GENERIC_BEARER", &envOK);
+         QBearerEngine *generic = 0;
+-        static QFactoryLoader loader(QBearerEngineFactoryInterface_iid, QLatin1String("/bearer"));
+         QFactoryLoader *l = &loader;
+         const PluginKeyMap keyMap = l->keyMap();
+         const PluginKeyMapConstIterator cend = keyMap.constEnd();
+--- a/src/network/bearer/qnetworkconfigmanager_p.h
++++ b/src/network/bearer/qnetworkconfigmanager_p.h
+@@ -54,6 +54,7 @@
+ #include "qnetworkconfigmanager.h"
+ #include "qnetworkconfiguration_p.h"
+ 
++#include <QtCore/private/qfactoryloader_p.h>
+ #include <QtCore/qmutex.h>
+ #include <QtCore/qset.h>
+ 
+@@ -117,6 +118,7 @@
+ private:
+     mutable QMutex mutex;
+ 
++    QFactoryLoader loader;
+     QList<QBearerEngine *> sessionEngines;
+ 
+     QSet<QString> onlineConfigurations;
diff --git a/debian/patches/series b/debian/patches/series
index 29be622..90138b0 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -5,6 +5,7 @@ fix_build_on_x32.diff
 gcc_6.3.diff
 fix_accessibility_crash.diff
 gtkdialogs_wayland.diff
+bearer_qfactoryloader.diff
 
 # Debian specific.
 no_dbus_dependency.diff

-- 
qtbase packaging



More information about the pkg-kde-commits mailing list