2017-01-08 14:07 GMT+03:00 Stuart Henderson <s...@spacehopper.org>:
> On 2017/01/08 10:29, Adam Wolk wrote:
>> > >
>> > > Runtime seems fine, but I see a segfault at shutdown (which I don't
>> > > see with the current amd64 snapshot packages) - any ideas?
>> > >
>>
>> Looks like it's an upstream Qt issue:
>>  https://github.com/OtterBrowser/otter-browser/issues/889
>>  https://bugreports.qt.io/browse/QTBUG-50829
>
> Ah great, thanks for looking into it. I'm OK with the Otter update then,
> now building Qt with the diff from the Qt commit to check if it helps (port
> diff for this below - Vadim, do you agree with committing this if it works?).
>
> Index: Makefile
> ===================================================================
> RCS file: /cvs/ports/x11/qt5/qtbase/Makefile,v
> retrieving revision 1.2
> diff -u -p -r1.2 Makefile
> --- Makefile    28 Dec 2016 01:41:23 -0000      1.2
> +++ Makefile    8 Jan 2017 11:06:42 -0000
> @@ -16,7 +16,7 @@ PKGNAME-psql =                qt5-postgresql-${VERSION
>  PKGNAME-sqlite2 =      qt5-sqlite2-${VERSION}
>  PKGNAME-tds =          qt5-tds-${VERSION}
>
> -REVISION-main =                0
> +REVISION-main =                1
>
>  PKG_ARCH-global =      *
>  PKG_ARCH-examples =    *
> Index: patches/patch-src_corelib_plugin_qfactoryloader_cpp
> ===================================================================
> RCS file: patches/patch-src_corelib_plugin_qfactoryloader_cpp
> diff -N patches/patch-src_corelib_plugin_qfactoryloader_cpp
> --- /dev/null   1 Jan 1970 00:00:00 -0000
> +++ patches/patch-src_corelib_plugin_qfactoryloader_cpp 8 Jan 2017 11:06:42 
> -0000
> @@ -0,0 +1,25 @@
> +$OpenBSD$
> +
> +Stop unloading plugins in QPluginLoader and QFactoryLoader
> +
> +https://bugreports.qt.io/browse/QTBUG-50829
> +http://lists.qt-project.org/pipermail/development/2015-November/023681.html
> +https://codereview.qt-project.org/#/c/140750/4//ALL,unified
> +
> +--- src/corelib/plugin/qfactoryloader.cpp.orig Sun Jan  8 10:57:50 2017
> ++++ src/corelib/plugin/qfactoryloader.cpp      Sun Jan  8 10:58:25 2017
> +@@ -208,10 +208,12 @@ void QFactoryLoader::update()
> +                     ++keyUsageCount;
> +                 }
> +             }
> +-            if (keyUsageCount || keys.isEmpty())
> ++            if (keyUsageCount || keys.isEmpty()) {
> ++              library->setLoadHints(QLibrary::PreventUnloadHint); // once 
> loaded, don't unload
> +                 d->libraryList += library;
> +-            else
> ++            } else {
> +                 library->release();
> ++            }
> +         }
> +     }
> + #else
> Index: patches/patch-src_corelib_plugin_qpluginloader_cpp
> ===================================================================
> RCS file: patches/patch-src_corelib_plugin_qpluginloader_cpp
> diff -N patches/patch-src_corelib_plugin_qpluginloader_cpp
> --- /dev/null   1 Jan 1970 00:00:00 -0000
> +++ patches/patch-src_corelib_plugin_qpluginloader_cpp  8 Jan 2017 11:06:42 
> -0000
> @@ -0,0 +1,36 @@
> +$OpenBSD$
> +
> +Stop unloading plugins in QPluginLoader and QFactoryLoader
> +
> +https://bugreports.qt.io/browse/QTBUG-50829
> +http://lists.qt-project.org/pipermail/development/2015-November/023681.html
> +https://codereview.qt-project.org/#/c/140750/4//ALL,unified
> +
> +--- src/corelib/plugin/qpluginloader.cpp.orig  Fri Sep 16 06:49:42 2016
> ++++ src/corelib/plugin/qpluginloader.cpp       Sun Jan  8 11:00:04 2017
> +@@ -148,6 +148,7 @@ QPluginLoader::QPluginLoader(const QString &fileName,
> +     : QObject(parent), d(0), did_load(false)
> + {
> +     setFileName(fileName);
> ++    setLoadHints(QLibrary::PreventUnloadHint);
> + }
> +
> + /*!
> +@@ -342,7 +343,7 @@ static QString locatePlugin(const QString& fileName)
> + void QPluginLoader::setFileName(const QString &fileName)
> + {
> + #if defined(QT_SHARED)
> +-    QLibrary::LoadHints lh;
> ++    QLibrary::LoadHints lh = QLibrary::PreventUnloadHint;
> +     if (d) {
> +         lh = d->loadHints();
> +         d->release();
> +@@ -391,7 +392,7 @@ Q_GLOBAL_STATIC(StaticPluginList, staticPluginList)
> +     \brief Give the load() function some hints on how it should behave.
> +
> +     You can give hints on how the symbols in the plugin are
> +-    resolved. By default, none of the hints are set.
> ++    resolved. By default since Qt 5.7, QLibrary::PreventUnloadHint is set.
> +
> +     See the documentation of QLibrary::loadHints for a complete
> +     description of how this property works.

I've just started looking at the issue, and you already bite me. :)
Please, go with it.

--
  WBR,
  Vadim Zhukov

Reply via email to