GNU bug report logs - #47655
QML2_IMPORT_PATH does not work in a profile

Previous Next

Package: guix;

Reported by: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>

Date: Thu, 8 Apr 2021 13:43:02 UTC

Severity: normal

Done: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 47655 in the body.
You can then email your comments to 47655 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-guix <at> gnu.org:
bug#47655; Package guix. (Thu, 08 Apr 2021 13:43:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Maxim Cournoyer <maxim.cournoyer <at> gmail.com>:
New bug report received and forwarded. Copy sent to bug-guix <at> gnu.org. (Thu, 08 Apr 2021 13:43:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
To: bug-guix <bug-guix <at> gnu.org>
Subject: QML2_IMPORT_PATH does not work in a profile
Date: Thu, 08 Apr 2021 09:42:24 -0400
Hello Guix,

When setting up a profile (via 'guix environment', for example) to
develop a Qt application, the search paths set by qtbase point to the
environment profile, which is a forest of symbolic links.  Apparently
this doesn't play well with at least QML2_IMPORT_PATH: the Qt
application built in the profile will not run, and Qt crashes in an
inscrutable way.

The following details a reproducer, which attempts to build jami-qt in
its 'guix environment' profile.

Reproduction steps:

1. Prepare the sources

$ cp -r $(guix build -S jami-qt) /tmp/jami-qt-checkout
$ cd /tmp/jami-qt-checkout
$ chmod +rw -R .

2. Enter the development environment

$ guix environment jami-qt

3. Create the build directory and bootstrap the build system

$ mkdir build && cd build
$ cmake .. -DCMAKE_INSTALL_PREFIX=$PWD/install

4. Build/install it locally.

$ make -j8 install

5. Try to run it

(if on a foreign distro rather than Guix System, you'll want to start
the daemon, 'dring' from the libring package manually -- but that's
another issue)

--8<---------------cut here---------------start------------->8---
$ install/bin/jami-qt --debug
No migration required
Can't open file:  "/home/maxim/.local/share/jami/d1c0b261a081d4ce/profile.vcf"
Terminated
--8<---------------cut here---------------end--------------->8---

The "Can't open file" warning is harmless and not at cause.

From a preliminary investigation, it appears to be caused by the fact
that the QML2_IMPORT_PATH environment variable points to a profile
entry, which is a forest of symbolic links:

--8<---------------cut here---------------start------------->8---
$ echo $QML2_IMPORT_PATH
/gnu/store/6i6d2zyxbkgmw20dk1ccsnwsdlnc8431-profile/lib/qt5/qml
--8<---------------cut here---------------end--------------->8---

Compared to what's in the wrapper of the jami-qt packaged binary (which
does run!):

--8<---------------cut here---------------start------------->8---
$ cat $(guix build jami-qt)/bin/jami-qt | grep QML2
export QML2_IMPORT_PATH="/gnu/store/7lh6gpnv3aszlaa24az247xnnh2j8yaj-qtwebengine-5.15.2/lib/qt5/qml:/gnu/store/z9z83c3b3y655sjv3iv42pq70dwifv99-qtwebchannel-5.15.2/lib/qt5/qml:/gnu/store/xzyjqlycxwys0fq6pgs5v5n24n7zgddl-qtmultimedia-5.15.2/lib/qt5/qml:/gnu/store/ry4k8i6j3y9h4ws48jc8wsc5gky7phaj-qtdeclarative-5.15.2/lib/qt5/qml:/gnu/store/9p2xxq0cwmycf9k6rcljk8bn0d3sl2n7-qtgraphicaleffects-5.15.2/lib/qt5/qml:/gnu/store/32c7xbjmx6ijb6fl5kkbvpq2p2pxs54c-qtquickcontrols-5.15.2/lib/qt5/qml:/gnu/store/52x80xcnh912v76i09f1gaqpll5v2n73-qtquickcontrols2-5.15.2/lib/qt5/qml"
--8<---------------cut here---------------end--------------->8---

Due to having been captured at build time, where there was no profile
involved, the individual components have been added and no symbolic
links is involved.

If we try to run our custom built jami-qt with this variable set, it
proceeds a bit further:

--8<---------------cut here---------------start------------->8---
$ export QML2_IMPORT_PATH="/gnu/store/7lh6gpnv3aszlaa24az247xnnh2j8yaj-qtwebengine-5.15.2/lib/qt5/qml:/gnu/store/z9z83c3b3y655sjv3iv42pq70dwifv99-qtwebchannel-5.15.2/lib/qt5/qml:/gnu/store/xzyjqlycxwys0fq6pgs5v5n24n7zgddl-qtmultimedia-5.15.2/lib/qt5/qml:/gnu/store/ry4k8i6j3y9h4ws48jc8wsc5gky7phaj-qtdeclarative-5.15.2/lib/qt5/qml:/gnu/store/9p2xxq0cwmycf9k6rcljk8bn0d3sl2n7-qtgraphicaleffects-5.15.2/lib/qt5/qml:/gnu/store/32c7xbjmx6ijb6fl5kkbvpq2p2pxs54c-qtquickcontrols-5.15.2/lib/qt5/qml:/gnu/store/52x80xcnh912v76i09f1gaqpll5v2n73-qtquickcontrols2-5.15.2/lib/qt5/qml"
$ install/bin/jami-qt --debug
No migration required
Can't open file:  "/home/maxim/.local/share/jami/d1c0b261a081d4ce/profile.vcf"
QQmlApplicationEngine failed to load component
qrc:/src/MainApplicationWindow.qml:39:1: Type ApplicationWindow unavailable
file:///gnu/store/66w3pq3zq6dqc6khg3i0fly31i8drws7-qtquickcontrols2-5.15.2/lib/qt5/qml/QtQuick/Controls.2/qmldir: plugin cannot be loaded for module ".gnu.store.66w3pq3zq6dqc6khg3i0fly31i8drws7-qtquickcontrols2-5.15.2.lib.qt5.qml.QtQuick.Controls": Module namespace 'QtQuick.Controls' does not match import URI '.gnu.store.66w3pq3zq6dqc6khg3i0fly31i8drws7-qtquickcontrols2-5.15.2.lib.qt5.qml.QtQuick.Controls'
lookup name NOT FOUND: "" "5534e909984953c9"
lookup name NOT FOUND: "" "5534e909984953c9"
lookup name NOT FOUND: "" "5534e909984953c9"
lookup name NOT FOUND: "" "5534e909984953c9"
lookup name NOT FOUND: "" "5534e909984953c9"
lookup name NOT FOUND: "" "dc553d8268bba4bd"
lookup name NOT FOUND: "" "dc553d8268bba4bd"
NetworkManager client initialized, version:  1.24.0 , daemon running: yes , networking enabled: yes
primary network connection: faee05bd-57e1-46d1-824a-4f90a067d472 default:  yes
--8<---------------cut here---------------end--------------->8---

It still fails to draw the window, probably due to the load error above,
which appears to be caused by a file name mismatch between what was
registered in the application at compile time and what is being loaded
(my guess).

The QML_IMPORT_TRACE variable can also be set to get a more verbose
output from the QML import machinery:

--8<---------------cut here---------------start------------->8---
$ unset QML2_IMPORT_PATH
$ source $GUIX_ENVIRONMENT/etc/profile
$ export QML_IMPORT_TRACE=1
$ install/bin/jami-qt --debug
QQmlImportDatabase::addImportPath: "/gnu/store/6i6d2zyxbkgmw20dk1ccsnwsdlnc8431-profile/lib/qt5/qml"
QQmlImportDatabase::addImportPath: "/gnu/store/6i6d2zyxbkgmw20dk1ccsnwsdlnc8431-profile/lib/qt5/qml"
QQmlImportDatabase::addImportPath: "qrc:/qt-project.org/imports"
QQmlImportDatabase::addImportPath: "/tmp/jami-qt-checkout/build/install/bin"
No migration required
Can't open file:  "/home/maxim/.local/share/jami/d1c0b261a081d4ce/profile.vcf"
QQmlImports(qrc:/src/MainApplicationWindow.qml)::addLibraryImport: "QtQuick" 2.14 as ""
QQmlImports(qrc:/src/MainApplicationWindow.qml)::importExtension: loaded "/gnu/store/6i6d2zyxbkgmw20dk1ccsnwsdlnc8431-profile/lib/qt5/qml/QtQuick.2/qmldir"
QQmlImportDatabase::registerPluginTypes: "QtQuick" from "/gnu/store/6i6d2zyxbkgmw20dk1ccsnwsdlnc8431-profile/lib/qt5/qml/QtQuick.2"
QQmlImports(qrc:/src/MainApplicationWindow.qml)::addLibraryImport: "QtQuick.Window" 2.14 as ""
QQmlImports(qrc:/src/MainApplicationWindow.qml)::importExtension: loaded "/gnu/store/6i6d2zyxbkgmw20dk1ccsnwsdlnc8431-profile/lib/qt5/qml/QtQuick/Window.2/qmldir"
QQmlImportDatabase::registerPluginTypes: "QtQuick.Window" from "/gnu/store/6i6d2zyxbkgmw20dk1ccsnwsdlnc8431-profile/lib/qt5/qml/QtQuick/Window.2"
QQmlImports(qrc:/src/MainApplicationWindow.qml)::addLibraryImport: "QtQuick.Controls" 2.14 as ""
QQmlImports(qrc:/src/MainApplicationWindow.qml)::importExtension: loaded "/gnu/store/6i6d2zyxbkgmw20dk1ccsnwsdlnc8431-profile/lib/qt5/qml/QtQuick/Controls.2/qmldir"
QQmlImportDatabase::registerPluginTypes: "QtQuick.Controls" from "/gnu/store/6i6d2zyxbkgmw20dk1ccsnwsdlnc8431-profile/lib/qt5/qml/QtQuick/Controls.2"
Terminated
--8<---------------cut here---------------end--------------->8---

An idea of something to investigate would be to review the code dealing
with importing the QML modules in the qtdeclarative sources, and
ensuring that it applies QDir::canonicalPath everytime it's handling an
import file name (to deal with the actual file rather than a symlink
pointing to it).

Thoughts?

Thanks,

Maxim




Information forwarded to bug-guix <at> gnu.org:
bug#47655; Package guix. (Thu, 08 Apr 2021 15:50:01 GMT) Full text and rfc822 format available.

Message #8 received at 47655 <at> debbugs.gnu.org (full text, mbox):

From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
To: 47655 <at> debbugs.gnu.org
Subject: Re: bug#47655: QML2_IMPORT_PATH does not work in a profile
Date: Thu, 08 Apr 2021 11:49:16 -0400
Here's a backtrace which shows where the problem occurs exactly:

--8<---------------cut here---------------start------------->8---
$ gdb --args install/client-qt/bin/jami-qt --debug
GNU gdb (GDB) 10.1
Copyright (C) 2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-unknown-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from install/client-qt/bin/jami-qt...
(gdb) run 
Starting program: /home/mcournoyer/src/ring-project/install/client-qt/bin/jami-qt --debug
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/gnu/store/fa6wj5bxkj5ll1d7292a70knmyl7a0cr-glibc-2.31/lib/libthread_db.so.1".
[New Thread 0x7fffe7ba7700 (LWP 19172)]
[New Thread 0x7fffdd987700 (LWP 19173)]
[New Thread 0x7fffd5186700 (LWP 19174)]
[New Thread 0x7fffdd186700 (LWP 19175)]
[New Thread 0x7fffdc985700 (LWP 19176)]
QQmlImportDatabase::addImportPath: "/gnu/store/rczz1sz7vffvrmwn7i5n2a9909xny3rl-profile/lib/qt5/qml"
QQmlImportDatabase::addImportPath: "/gnu/store/rczz1sz7vffvrmwn7i5n2a9909xny3rl-profile/lib/qt5/qml"
QQmlImportDatabase::addImportPath: "qrc:/qt-project.org/imports"
QQmlImportDatabase::addImportPath: "/home/mcournoyer/src/ring-project/install/client-qt/bin"
[New Thread 0x7fffd7dff700 (LWP 19178)]
[New Thread 0x7fffd6bbe700 (LWP 19179)]
[New Thread 0x7fffd63bd700 (LWP 19180)]
[New Thread 0x7fffd5bbc700 (LWP 19181)]
[New Thread 0x7fffd4985700 (LWP 19182)]
[New Thread 0x7fffb7fff700 (LWP 19183)]
[New Thread 0x7fffb77fe700 (LWP 19184)]
[Detaching after fork from child process 19185]
No accounts to migrate
[New Thread 0x7fffb6ffd700 (LWP 19186)]
QQmlImports(qrc:/src/MainApplicationWindow.qml)::addLibraryImport: "QtQuick" 2.14 as ""
QQmlImports(qrc:/src/MainApplicationWindow.qml)::importExtension: loaded "/gnu/store/rczz1sz7vffvrmwn7i5n2a9909xny3rl-profile/lib/qt5/qml/QtQuick.2/qmldir"
QQmlImportDatabase::registerPluginTypes: "QtQuick" from "/gnu/store/rczz1sz7vffvrmwn7i5n2a9909xny3rl-profile/lib/qt5/qml/QtQuick.2"
QQmlImports(qrc:/src/MainApplicationWindow.qml)::addLibraryImport: "QtQuick.Window" 2.14 as ""
QQmlImports(qrc:/src/MainApplicationWindow.qml)::importExtension: loaded "/gnu/store/rczz1sz7vffvrmwn7i5n2a9909xny3rl-profile/lib/qt5/qml/QtQuick/Window.2/qmldir"
QQmlImportDatabase::registerPluginTypes: "QtQuick.Window" from "/gnu/store/rczz1sz7vffvrmwn7i5n2a9909xny3rl-profile/lib/qt5/qml/QtQuick/Window.2"
QQmlImports(qrc:/src/MainApplicationWindow.qml)::addLibraryImport: "QtQuick.Controls" 2.14 as ""
QQmlImports(qrc:/src/MainApplicationWindow.qml)::importExtension: loaded "/gnu/store/rczz1sz7vffvrmwn7i5n2a9909xny3rl-profile/lib/qt5/qml/QtQuick/Controls.2/qmldir"
QQmlImportDatabase::registerPluginTypes: "QtQuick.Controls" from "/gnu/store/rczz1sz7vffvrmwn7i5n2a9909xny3rl-profile/lib/qt5/qml/QtQuick/Controls.2"

Thread 7 "QQmlThread" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fffd7dff700 (LWP 19178)]
0x00007ffff7f4c829 in QListData::size (this=0x7fffc0090438)
    at /gnu/store/g14mn8v8gh48m7fp2i12yalc7bgj8jgf-qtbase-5.15.2/include/qt5/QtCore/qlist.h:115
115         inline int size() const noexcept { return int(d->end - d->begin); }   // q6sizetype
(gdb) bt -full
#0  0x00007ffff7f4c829 in QListData::size (this=0x7fffc0090438)
    at /gnu/store/g14mn8v8gh48m7fp2i12yalc7bgj8jgf-qtbase-5.15.2/include/qt5/QtCore/qlist.h:115
No locals.
#1  QList<QString>::count (this=0x7fffc0090438)
    at /gnu/store/g14mn8v8gh48m7fp2i12yalc7bgj8jgf-qtbase-5.15.2/include/qt5/QtCore/qlist.h:359
No locals.
#2  QQuickStyleSelector::select (this=<optimized out>, fileName=...) at qquickstyleselector.cpp:138
        d = <optimized out>
        to = <optimized out>
#3  0x00007ffff7f4bddf in QQuickStylePlugin::resolvedUrl (this=this <at> entry=0x7fffc008d310, fileName=...)
    at qquickstyleplugin.cpp:88
        d = <optimized out>
#4  0x00007fffd52c2210 in QtQuickControls2Plugin::registerTypes (this=0x7fffc008d310, 
    uri=0x7fffc008d178 "QtQuick.Controls") at qtquickcontrols2plugin.cpp:132
        style = {static null = {<No data fields>}, d = 0x7fffef1c48e0 <qt_array>}
        theme = 0x7fffc008d1c0
        stylePlugins = {<QListSpecialMethods<QQuickStylePlugin*>> = {<No data fields>}, {p = {
              static shared_null = {ref = {atomic = {_q_value = {<std::__atomic_base<int>> = {
                        static _S_alignment = 4, _M_i = -1}, static is_always_lock_free = true}}}, 
                alloc = 0, begin = 0, end = 0, array = {0x0}}, d = 0x7fffc008f4c0}, d = 0x7fffc008f4c0}}
        import = {d = <optimized out>}
#5  0x00007fffef7f0dea in QQmlMetaType::registerPluginTypes (instance=instance <at> entry=0x7fffc008d310, 
    basePath=..., uri=..., typeNamespace=..., vmaj=vmaj <at> entry=2, errors=errors <at> entry=0x7fffd7dfe460)
    at qml/qqmlmetatype.cpp:732
        iface = <optimized out>
        bytes = {d = 0x7fffc008d160}
        moduleId = <optimized out>
        failureRecorder = {
          data = 0x7fffef9d76c0 <(anonymous namespace)::Q_QGS_metaTypeData::innerFunction()::holder>}
        failures = {<QList<QString>> = {<QListSpecialMethods<QString>> = {<No data fields>}, {p = {
                static shared_null = {ref = {atomic = {_q_value = {<std::__atomic_base<int>> = {
                          static _S_alignment = 4, _M_i = -1}, static is_always_lock_free = true}}}, 
                  alloc = 0, begin = 0, end = 0, array = {0x0}}, 
                d = 0x7fffef1c5410 <QListData::shared_null>}, 
              d = 0x7fffef1c5410 <QListData::shared_null>}}, <No data fields>}
        data = {locker = {val = 140737213462185}, 
          data = 0x7fffef9d76c0 <(anonymous namespace)::Q_QGS_metaTypeData::innerFunction()::holder>}
#6  0x00007fffef8331c0 in registerPluginTypes (instance=instance <at> entry=0x7fffc008d310, basePath=..., 
    uri=..., typeNamespace=..., vmaj=vmaj <at> entry=2, errors=errors <at> entry=0x7fffd7dfe460)
    at qml/qqmlimport.cpp:2165
No locals.
#7  0x00007fffef83621e in QQmlImportDatabase::importDynamicPlugin (this=this <at> entry=0x6e1e88, 
    filePath=..., uri=..., typeNamespace=..., vmaj=vmaj <at> entry=2, errors=errors <at> entry=0x7fffd7dfe460)
    at qml/qqmlimport.cpp:2282
        plugin = {uri = {static null = {<No data fields>}, d = 0x7fffc0008a70}, loader = 0x7fffc008c9a0}
        loader = 0x7fffc008c9a0
        plugins = <optimized out>
        lock = {val = 140737213470985}
        typesRegistered = <optimized out>
        fileInfo = {d_ptr = {d = 0x8a0bb0}}
        absoluteFilePath = {static null = {<No data fields>}, d = 0x7fffc008caf0}
        instance = <optimized out>
        engineInitialized = <optimized out>
#8  0x00007fffef839c12 in QQmlImportsPrivate::importExtension (this=this <at> entry=0x8a0b50, 
    qmldirFilePath=..., uri=..., vmaj=vmaj <at> entry=2, vmin=vmin <at> entry=14, 
    database=database <at> entry=0x6e1e88, qmldir=..., errors=0x7fffd7dfe460) at qml/qqmlimport.cpp:1221
        resolvedFilePath = {static null = {<No data fields>}, d = 0x7fffc008caf0}
        plugin = <optimized out>
--Type <RET> for more, q to quit, c to continue without paging--c
        __for_range = @0x7fffd7dfdfa0: {<QListSpecialMethods<QQmlDirParser::Plugin>> = {<No data fields>}, {p = {static shared_null = {ref = {atomic = {_q_value = {<std::__atomic_base<int>> = {static _S_alignment = 4, _M_i = -1}, static is_always_lock_free = true}}}, alloc = 0, begin = 0, end = 0, array = {0x0}}, d = 0x7fffc0090c30}, d = 0x7fffc0090c30}}
        __for_begin = {i = <optimized out>}
        __for_end = {i = <optimized out>}
        typeNamespace = {static null = {<No data fields>}, d = 0x7fffc008c7b0}
        qmldirPath = {static null = {<No data fields>}, d = 0x7fffc0085750}
        slash = <optimized out>
        dynamicPluginsFound = <optimized out>
        staticPluginsFound = 0
        qmldirPlugins = {<QListSpecialMethods<QQmlDirParser::Plugin>> = {<No data fields>}, {p = {static shared_null = {ref = {atomic = {_q_value = {<std::__atomic_base<int>> = {static _S_alignment = 4, _M_i = -1}, static is_always_lock_free = true}}}, alloc = 0, begin = 0, end = 0, array = {0x0}}, d = 0x7fffc0090c30}, d = 0x7fffc0090c30}}
        qmldirPluginCount = <optimized out>
#9  0x00007fffef83a930 in QQmlImportsPrivate::addLibraryImport (this=0x8a0b50, uri=..., prefix=..., vmaj=vmaj <at> entry=2, vmin=vmin <at> entry=14, qmldirIdentifier=..., qmldirUrl=..., incomplete=false, database=0x6e1e88, errors=0x7fffd7dfe460) at qml/qqmlimport.cpp:1571
        qmldir = {m_parser = {_errors = {<QListSpecialMethods<QQmlJS::DiagnosticMessage>> = {<No data fields>}, {p = {static shared_null = {ref = {atomic = {_q_value = {<std::__atomic_base<int>> = {static _S_alignment = 4, _M_i = -1}, static is_always_lock_free = true}}}, alloc = 0, begin = 0, end = 0, array = {0x0}}, d = 0x7fffef1c5410 <QListData::shared_null>}, d = 0x7fffef1c5410 <QListData::shared_null>}}, _typeNamespace = {static null = {<No data fields>}, d = 0x7fffc008c7b0}, _components = {<QHash<QString, QQmlDirParser::Component>> = {{d = 0x7fffef1c5380 <QHashData::shared_null>, e = 0x7fffef1c5380 <QHashData::shared_null>}}, <No data fields>}, _dependencies = {{d = 0x7fffc0090c80, e = 0x7fffc0090c80}}, _imports = {<QList<QString>> = {<QListSpecialMethods<QString>> = {<No data fields>}, {p = {static shared_null = {ref = {atomic = {_q_value = {<std::__atomic_base<int>> = {static _S_alignment = 4, _M_i = -1}, static is_always_lock_free = true}}}, alloc = 0, begin = 0, end = 0, array = {0x0}}, d = 0x7fffef1c5410 <QListData::shared_null>}, d = 0x7fffef1c5410 <QListData::shared_null>}}, <No data fields>}, _scripts = {<QListSpecialMethods<QQmlDirParser::Script>> = {<No data fields>}, {p = {static shared_null = {ref = {atomic = {_q_value = {<std::__atomic_base<int>> = {static _S_alignment = 4, _M_i = -1}, static is_always_lock_free = true}}}, alloc = 0, begin = 0, end = 0, array = {0x0}}, d = 0x7fffef1c5410 <QListData::shared_null>}, d = 0x7fffef1c5410 <QListData::shared_null>}}, _plugins = {<QListSpecialMethods<QQmlDirParser::Plugin>> = {<No data fields>}, {p = {static shared_null = {ref = {atomic = {_q_value = {<std::__atomic_base<int>> = {static _S_alignment = 4, _M_i = -1}, static is_always_lock_free = true}}}, alloc = 0, begin = 0, end = 0, array = {0x0}}, d = 0x7fffc0090c30}, d = 0x7fffc0090c30}}, _designerSupported = true, _typeInfos = {<QListSpecialMethods<QQmlDirParser::TypeInfo>> = {<No data fields>}, {p = {static shared_null = {ref = {atomic = {_q_value = {<std::__atomic_base<int>> = {static _S_alignment = 4, _M_i = -1}, static is_always_lock_free = true}}}, alloc = 0, begin = 0, end = 0, array = {0x0}}, d = 0x7fffef1c5410 <QListData::shared_null>}, d = 0x7fffef1c5410 <QListData::shared_null>}}, _className = {static null = {<No data fields>}, d = 0x7fffc0090cc0}}, m_location = {static null = {<No data fields>}, d = 0x7fffc0084940}, m_hasContent = true}
        nameSpace = 0x8a0b68
        inserted = <optimized out>
#10 0x00007fffef83aa76 in QQmlImports::addLibraryImport (this=this <at> entry=0x8a1268, importDb=importDb <at> entry=0x6e1e88, uri=..., prefix=..., vmaj=2, vmin=14, qmldirIdentifier=..., qmldirUrl=..., incomplete=false, errors=0x7fffd7dfe460) at qml/qqmlimport.cpp:1830
No locals.
#11 0x00007fffef80c3bc in QQmlTypeLoader::Blob::addImport (this=this <at> entry=0x8a1200, import=std::shared_ptr<QQmlTypeLoader::Blob::PendingImport> (use count 1, weak count 0) = {...}, errors=errors <at> entry=0x7fffd7dfe460) at qml/qqmltypeloader.cpp:586
        qmldirFilePath = {static null = {<No data fields>}, d = 0x7fffc0084940}
        qmldirUrl = {static null = {<No data fields>}, d = 0x7fffc008c590}
        qmldirResult = QQmlImports::QmldirFound
        importDatabase = 0x6e1e88
#12 0x00007fffef80c9b7 in QQmlTypeLoader::Blob::addImport (this=this <at> entry=0x8a1200, import=import <at> entry=0x7fffc0015220, errors=errors <at> entry=0x7fffd7dfe460) at qml/qqmltypeloader.cpp:562
No locals.
#13 0x00007fffef7b620e in QQmlTypeData::continueLoadFromIR (this=this <at> entry=0x8a1200) at qml/qqmltypedata.cpp:703
        import = 0x7fffc0015220
        __for_range = <optimized out>
        __for_begin = {i = <optimized out>}
        __for_end = {i = <optimized out>}
        containingType = {d = {o = 0x0}}
        containingTypeName = {static null = {<No data fields>}, d = 0x7fffc000bde0}
        major = -1
        minor = -1
        ns = 0x0
        errors = {<QListSpecialMethods<QQmlError>> = {<No data fields>}, {p = {static shared_null = {ref = {atomic = {_q_value = {<std::__atomic_base<int>> = {static _S_alignment = 4, _M_i = -1}, static is_always_lock_free = true}}}, alloc = 0, begin = 0, end = 0, array = {0x0}}, d = 0x7fffef1c5410 <QListData::shared_null>}, d = 0x7fffef1c5410 <QListData::shared_null>}}
#14 0x00007fffef7bb354 in QQmlTypeData::dataReceived (this=0x8a1200, data=...) at qml/qqmltypedata.cpp:601
No locals.
#15 0x00007fffef80718c in QQmlTypeLoader::setData (this=this <at> entry=0x6e1ed8, blob=blob <at> entry=0x8a1200, d=...) at qml/qqmltypeloader.cpp:447
        prof = {<QQmlProfilerHelper> = {<QQmlProfilerDefinitions> = {<No data fields>}, profiler = 0x0}, <No data fields>}
#16 0x00007fffef8074c4 in QQmlTypeLoader::setData (this=this <at> entry=0x6e1ed8, blob=blob <at> entry=0x8a1200, fileName=...) at qml/qqmltypeloader.cpp:437
        d = {inlineSourceCode = {static null = {<No data fields>}, d = 0x7fffef1c4940 <QArrayData::shared_null>}, fileInfo = {d_ptr = {d = 0x7fffc0004f50}}, hasInlineSourceCode = false}
#17 0x00007fffef8079d5 in QQmlTypeLoader::loadThread (this=0x6e1ed8, blob=blob <at> entry=0x8a1200) at qml/qqmltypeloader.cpp:299
        fileName = {static null = {<No data fields>}, d = 0x7fffc0003400}
#18 0x00007fffef7c4d7d in QQmlTypeLoaderThread::loadThread (this=<optimized out>, b=0x8a1200) at qml/qqmltypeloaderthread.cpp:162
No locals.
#19 0x00007fffef885796 in QQmlThreadPrivate::threadEvent (this=0x6bc840) at qml/ftw/qqmlthread.cpp:198
        message = <optimized out>
#20 0x00007fffef885eea in QQmlThreadPrivate::event (this=0x6bc840, e=0x8a0210) at qml/ftw/qqmlthread.cpp:142
No locals.
#21 0x00007ffff715ac3c in QApplicationPrivate::notify_helper (this=this <at> entry=0x666140, receiver=receiver <at> entry=0x6bc840, e=e <at> entry=0x8a0210) at kernel/qapplication.cpp:3632
        consumed = false
        filtered = false
#22 0x00007ffff716157f in QApplication::notify (this=0x7fffffffd070, receiver=0x6bc840, e=0x8a0210) at kernel/qapplication.cpp:3156
        w = <optimized out>
        wheel = <optimized out>
        spontaneous = <optimized out>
        phase = <optimized out>
        d = <optimized out>
        res = false
#23 0x00007fffef0d1373 in QCoreApplication::notifyInternal2 (receiver=0x6bc840, event=0x8a0210) at kernel/qcoreapplication.cpp:1063
        selfRequired = true
        result = false
        cbdata = {0x6bc840, 0x8a0210, 0x7fffd7dfe7ff}
        d = <optimized out>
        threadData = <optimized out>
        scopeLevelCounter = {threadData = 0x6d8560}
#24 0x00007fffef0d152e in QCoreApplication::sendEvent (receiver=receiver <at> entry=0x6bc840, event=event <at> entry=0x8a0210) at kernel/qcoreapplication.cpp:1458
No locals.
#25 0x00007fffef0d4521 in QCoreApplicationPrivate::sendPostedEvents (receiver=receiver <at> entry=0x0, event_type=event_type <at> entry=0, data=0x6d8560) at kernel/qcoreapplication.cpp:1817
        e = 0x8a0210
        pe = <optimized out>
        r = 0x6bc840
        relocker = {m_func = {__locker = @0x7fffd7dfe880}, m_invoke = true}
        event_deleter = {d = 0x8a0210}
        locker = {_M_device = 0x6d8590, _M_owns = false}
        startOffset = 0
        i = @0x6d8584: 1
        cleanup = {receiver = 0x0, event_type = 0, data = 0x6d8560, exceptionCaught = true}
#26 0x00007fffef0d4b18 in QCoreApplication::sendPostedEvents (receiver=receiver <at> entry=0x0, event_type=event_type <at> entry=0) at kernel/qcoreapplication.cpp:1676
        data = <optimized out>
#27 0x00007fffef130d53 in postEventSourceDispatch (s=0x7fffc0004bb0) at kernel/qeventdispatcher_glib.cpp:277
        source = 0x7fffc0004bb0
#28 0x00007ffff769deda in g_main_context_dispatch () from /gnu/store/rczz1sz7vffvrmwn7i5n2a9909xny3rl-profile/lib/libglib-2.0.so.0
No symbol table info available.
#29 0x00007ffff769e0d8 in g_main_context_iterate.isra () from /gnu/store/rczz1sz7vffvrmwn7i5n2a9909xny3rl-profile/lib/libglib-2.0.so.0
No symbol table info available.
#30 0x00007ffff769e15c in g_main_context_iteration () from /gnu/store/rczz1sz7vffvrmwn7i5n2a9909xny3rl-profile/lib/libglib-2.0.so.0
No symbol table info available.
#31 0x00007fffef13044c in QEventDispatcherGlib::processEvents (this=0x7fffc0000b60, flags=...) at kernel/qeventdispatcher_glib.cpp:423
        d = 0x7fffc0000b80
        canWait = true
        savedFlags = {i = 0}
        result = <optimized out>
#32 0x00007fffef0cfd2a in QEventLoop::exec (this=this <at> entry=0x7fffd7dfeab0, flags=..., flags <at> entry=...) at kernel/qeventloop.cpp:232
        d = 0x7fffc0003690
        threadData = <optimized out>
        locker = {val = 7082872}
        ref = {d = 0x7fffc0003690, locker = @0x7fffd7dfea48, exceptionCaught = true}
        app = <optimized out>
#33 0x00007fffeeee9bd7 in QThread::exec (this=this <at> entry=0x6bc840) at thread/qthread.cpp:547
        d = 0x6c1320
        locker = {val = 7082872}
        eventLoop = {<QObject> = {_vptr.QObject = 0x7fffef3b0268 <vtable for QEventLoop+16>, static staticMetaObject = {d = {superdata = {direct = 0x0}, stringdata = 0x7fffef2a6580 <qt_meta_stringdata_QObject>, data = 0x7fffef2a6460 <qt_meta_data_QObject>, static_metacall = 0x7fffef10ac80 <QObject::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}, d_ptr = {d = 0x7fffc0003690}, static staticQtMetaObject = {d = {superdata = {direct = 0x0}, stringdata = 0x7fffef2a9520 <qt_meta_stringdata_Qt>, data = 0x7fffef2a66a0 <qt_meta_data_Qt>, static_metacall = 0x0, relatedMetaObjects = 0x0, extradata = 0x0}}}, static staticMetaObject = {d = {superdata = {direct = 0x7fffef3a7ae0 <QObject::staticMetaObject>}, stringdata = 0x7fffef2a0d00 <qt_meta_stringdata_QEventLoop>, data = 0x7fffef2a0ca0 <qt_meta_data_QEventLoop>, static_metacall = 0x7fffef0cfa30 <QEventLoop::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}}
        returnCode = <optimized out>
#34 0x00007fffef885465 in QQmlThreadPrivate::run (this=0x6bc840) at qml/ftw/qqmlthread.cpp:155
No locals.
#35 0x00007fffeeeeaff9 in QThreadPrivate::start (arg=0x6bc840) at thread/qthread_unix.cpp:329
        thr = 0x6bc840
        data = <optimized out>
        __clframe = {__cancel_routine = 0x7fffeeeea470 <QThreadPrivate::finish(void*)>, __cancel_arg = 0x6bc840, __do_it = 1, __cancel_type = <optimized out>}
#36 0x00007fffee921f64 in start_thread () from /gnu/store/fa6wj5bxkj5ll1d7292a70knmyl7a0cr-glibc-2.31/lib/libpthread.so.0
No symbol table info available.
#37 0x00007fffeea319af in clone () from /gnu/store/fa6wj5bxkj5ll1d7292a70knmyl7a0cr-glibc-2.31/lib/libc.so.6
No symbol table info available.
--8<---------------cut here---------------end--------------->8---

It crashes in the QtQuickControls2 plugin registration code.  Perhaps
the fix could be local to that, else applied globally to
QQmlMetaType::registerPluginTypes (which is in qtdeclarative).

Maxim




Reply sent to Maxim Cournoyer <maxim.cournoyer <at> gmail.com>:
You have taken responsibility. (Tue, 02 Aug 2022 04:45:02 GMT) Full text and rfc822 format available.

Notification sent to Maxim Cournoyer <maxim.cournoyer <at> gmail.com>:
bug acknowledged by developer. (Tue, 02 Aug 2022 04:45:02 GMT) Full text and rfc822 format available.

Message #13 received at 47655-done <at> debbugs.gnu.org (full text, mbox):

From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
To: 47655-done <at> debbugs.gnu.org
Subject: Re: bug#47655: QML2_IMPORT_PATH does not work in a profile
Date: Tue, 02 Aug 2022 00:44:37 -0400
Hello,

Maxim Cournoyer <maxim.cournoyer <at> gmail.com> writes:

> Hello Guix,
>
> When setting up a profile (via 'guix environment', for example) to
> develop a Qt application, the search paths set by qtbase point to the
> environment profile, which is a forest of symbolic links.  Apparently
> this doesn't play well with at least QML2_IMPORT_PATH: the Qt
> application built in the profile will not run, and Qt crashes in an
> inscrutable way.

This seems to have been resolved using Qt 6.

Closing.

Maxim




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Tue, 30 Aug 2022 11:24:07 GMT) Full text and rfc822 format available.

This bug report was last modified 1 year and 210 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.