QML2_IMPORT_PATH does not work in a profile

  • Done
  • quality assurance status badge
Details
One participant
  • Maxim Cournoyer
Owner
unassigned
Submitted by
Maxim Cournoyer
Severity
normal
M
M
Maxim Cournoyer wrote on 8 Apr 2021 15:42
(name . bug-guix)(address . bug-guix@gnu.org)
877dlcnb9b.fsf@gmail.com
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)

Toggle snippet (6 lines)
$ install/bin/jami-qt --debug
No migration required
Can't open file: "/home/maxim/.local/share/jami/d1c0b261a081d4ce/profile.vcf"
Terminated

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:

Toggle snippet (4 lines)
$ echo $QML2_IMPORT_PATH
/gnu/store/6i6d2zyxbkgmw20dk1ccsnwsdlnc8431-profile/lib/qt5/qml

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

Toggle snippet (4 lines)
$ 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"

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:

Toggle snippet (18 lines)
$ 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

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:

Toggle snippet (22 lines)
$ 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

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
M
M
Maxim Cournoyer wrote on 8 Apr 2021 17:49
(address . 47655@debbugs.gnu.org)
8735w0n5dv.fsf@gmail.com
Here's a backtrace which shows where the problem occurs exactly:

Toggle snippet (230 lines)
$ 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@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@entry=0x7fffc008d310,
basePath=..., uri=..., typeNamespace=..., vmaj=vmaj@entry=2, errors=errors@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@entry=0x7fffc008d310, basePath=...,
uri=..., typeNamespace=..., vmaj=vmaj@entry=2, errors=errors@entry=0x7fffd7dfe460)
at qml/qqmlimport.cpp:2165
No locals.
#7 0x00007fffef83621e in QQmlImportDatabase::importDynamicPlugin (this=this@entry=0x6e1e88,
filePath=..., uri=..., typeNamespace=..., vmaj=vmaj@entry=2, errors=errors@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@entry=0x8a0b50,
qmldirFilePath=..., uri=..., vmaj=vmaj@entry=2, vmin=vmin@entry=14,
database=database@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@entry=2, vmin=vmin@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@entry=0x8a1268, importDb=importDb@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@entry=0x8a1200, import=std::shared_ptr<QQmlTypeLoader::Blob::PendingImport> (use count 1, weak count 0) = {...}, errors=errors@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@entry=0x8a1200, import=import@entry=0x7fffc0015220, errors=errors@entry=0x7fffd7dfe460) at qml/qqmltypeloader.cpp:562
No locals.
#13 0x00007fffef7b620e in QQmlTypeData::continueLoadFromIR (this=this@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@entry=0x6e1ed8, blob=blob@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@entry=0x6e1ed8, blob=blob@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@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@entry=0x666140, receiver=receiver@entry=0x6bc840, e=e@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@entry=0x6bc840, event=event@entry=0x8a0210) at kernel/qcoreapplication.cpp:1458
No locals.
#25 0x00007fffef0d4521 in QCoreApplicationPrivate::sendPostedEvents (receiver=receiver@entry=0x0, event_type=event_type@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@entry=0x0, event_type=event_type@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@entry=0x7fffd7dfeab0, flags=..., flags@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@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.

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
M
M
Maxim Cournoyer wrote on 2 Aug 2022 06:44
(address . 47655-done@debbugs.gnu.org)
874jyv2r0q.fsf@gmail.com
Hello,

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

Toggle quote (9 lines)
> 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
Closed
?