I'm using the freebsd-ports-kde plasma5-5.13 branch from Github to upgrade my Plasma 5 installation from the 5.12 series currently in the stable ports tree. top shows the qmlplugindump process pinning one of the CPUs at about 100% during the configure phase, and it just hangs.
Hi there The plasma5-5.13 tree is my dogfooding and branch, and I and it also contains Qt5 5.12-beta2. Have you already upgraded your whole Qt or do you have a mix of 5.11.2 and 5.12.0.b2? Mfg Tobias
I'm using "portmaster -a" or "portmaster -ydbga --no-confirm" to upgrade. So unless there is some issue with portmaster's handling of the upgrade process or the ports' dependencies, QT should be already upgraded.
I paid closer attention to the process and did notice some things. At least a few parts of the QT libraries were not upgraded to beta 2 yet, such at qt5-qtpaths or qt5-quickcontrols. So I uninstalled anything which was not yet upgraded in hopes that "portsmaster -a" would handle everything. But portmaster still wanted to compile plasma5-kwin first. Following are the last few lines of configure output from plasma5-kwin before it stops and hangs: -- Could NOT find Libcap (missing: SETCAP_EXECUTABLE Libcap_LIBRARIES) -- Found QtQuick-QMLModule: TRUE (found version "") -- qmlplugindump failed for QtQuick.Controls. -- Could NOT find QtQuick.Controls-QMLModule (missing: QtQuick.Controls-QMLModule_FOUND) -- Found QtQuick.Layouts-QMLModule: TRUE (found version "") -- Found QtQuick.VirtualKeyboard-QMLModule: TRUE (found version "") -- Found QtQuick.Window-QMLModule: TRUE (found version "") I updated the git tree which now has beta 3 of the QT5 libraries, and I manually ran "make install clean" for qt5-qtpaths, qt5-quickcontrols, qt5-quickcontrols2, and qt5-virtualkeyboard since those seem to possible have an issue, per the output. But that didn't solve anything.
Which version of FreeBSD are you using?
(In reply to Tobias C. Berner from comment #4) Do you have qt5-quick-5.12.0.b3 installed? -- qmlplugindump is part of it (x11-toolkits/qt5-quick). > pkg which /usr/local/lib/qt5/bin/qmlplugindump /usr/local/lib/qt5/bin/qmlplugindump was installed by package qt5-quick-5.12.0.b3
I'm running 12.0-BETA2 r339783 GENERIC amd64 from the stable/12 branch. I do have qt5-quick-5.12.0.b3 installed. And for what it may be worth, I found this old bug from 2014 that may be at least tangentially related. I tried the environment variable to no avail: https://bugs.launchpad.net/ubuntu/+source/ubuntu-ui-toolkit/+bug/1281237
I ran "pkg check -Ba" to look for broken libraries and found none. I ran "portmaster -a" which ran fine until it got to plasma5-kwin. I manually removed and reinstalled QT5 libraries. Nothing worked. I finally just ran "pkg remove -fa" and removed all packages, rebooted, and then compiled x11/kde5 from scratch. Everything -- including plasma5-kwin -- compiled without any problems. This suggests to me that somewhere there was a broken dependency that was missed by the tools I used to troubleshoot. But at this point we may never find out what it was.
I finally got this thing figured out. I ran into this bug again after updating the Area 51 ports tree in question and running "portmaster -a". This time I poked around a little and found ../plasma5-kwin/work/.build/gst-plugin-scanner.core. Apparently the configure script for kwin invokes gst-plugin-scanner from the gstreamer1 package, and it had crashed for some reason. qmlplugindump's hanging behavior was a result of gst-plugin-scanner's crash. As it turns out, there is FreeBSD bug 233100 which describes how gst-plugins-* ports are not updated by portmaster, as they should be, when gstreamer1 is updated. Since the plugins were not updated, the old plugin versions were causing gst-plugin-scanner to crash. So I removed gst-plugins-bad, gst-plugins-good, and gst-plugins-ugly. After that, plasma5-kwin configured, compiled, and installed without any further problem. I don't know why kwin is invoking gst-plugin-scanner (gstreamer isn't a dependency of kwin, is it?), but gstreamer1 was the cause all along.
I worked around this problem by stopping webcamd and unloading the cuse module after noticing that qmlplugindump was in a state that appeared to be related to cuse.
It seems I got the same problem on 13-CURRENT. Running `qmlplugindump QtQuick 2.3` under `truss` reveals that it hangs on mmap(0x0, 12884905984, ...) mmap(0x0, 6291456, ...) Iteresting thing is that copying this binary to a working system doesn't break it - I can still build plasma5-kwin with that binary.
(In reply to Gleb Popov from comment #10) > qmlplugindump QtQuick 2.3 import QtQuick.tooling 1.2 // This file describes the plugin-supplied types contained in the library. // It is used for QML tooling purposes only. // // This file was auto-generated by: // 'qmlplugindump QtQuick 2.3' Module { dependencies: ["QtQuick 2.12"] } <jemalloc>: /usr/src/contrib/jemalloc/include/jemalloc/internal/extent_inlines.h:63: Failed assertion: "szind < NSIZES" [1] 84573 abort qmlplugindump QtQuick 2.3 is what I get on my machine at the moment -- so that might be worth investigating.
Allocating 12G is probably an overkill in any case and I wobnder if jemalloc is still built with debug measured turned on in -current, say, causing it to fill the allocated blocks with with filler? That would explain why -current is affected.
(In reply to Alexander Kabaev from comment #12) In reply to myself: env MALLOC_CONF=junk:false qmlplugindump QtQuick 2.3 ... results in assertion in jemalloc: import QtQuick.tooling 1.2 // This file describes the plugin-supplied types contained in the library. // It is used for QML tooling purposes only. // // This file was auto-generated by: // 'qmlplugindump QtQuick 2.3' Module { dependencies: ["QtQuick 2.12"] } <jemalloc>: jemalloc_arena.c:271: Failed assertion: "bitmap_get(slab_data->bitmap, &bin_info->bitmap_info, regind)" Abort (core dumped)
Full backtrace of the crash. It does appear QT tries to destruct already freed object: Program terminated with signal SIGBUS, Bus error. #0 0x00000008023af496 in QHashData::detach_helper (this=0x8038bf230, node_duplicate=0x801187640 <QHash<QMetaObject const*, int>::duplicateNode(QHashData::Node*, void*)>, node_delete=0x801186e50 <QHash<QMetaObject const*, int>::deleteNode2(QHashData::Node*)>, nodeSize=32, nodeAlign=8) at tools/qhash.cpp:531 531 Node *oldNode = buckets[i]; (gdb) print *this $2 = {fakeNext = 0x5a5a5a5a5a5a5a5a, buckets = 0x5a5a5a5a5a5a5a5a, ref = {atomic = { _q_value = {<std::__1::__atomic_base<int, true>> = {<std::__1::__atomic_base<int, false>> = {__a_ = 1515870810, static is_always_lock_free = <optimized out>}, <No data fields>}, <No data fields>}}}, size = 1515870810, nodeSize = 1515870810, userNumBits = 23130, numBits = 23130, numBuckets = 1515870810, seed = 1515870810, sharable = 0, strictAlignment = 1, reserved = 378967702, static shared_null = {fakeNext = 0x0, buckets = 0x0, ref = { atomic = {_q_value = {<std::__1::__atomic_base<int, true>> = {<std::__1::__atomic_base<int, false>> = { __a_ = -1, static is_always_lock_free = <optimized out>}, <No data fields>}, <No data fields>}}}, size = 0, nodeSize = 0, userNumBits = 4, numBits = 0, numBuckets = 0, seed = 0, sharable = 1, strictAlignment = 0, reserved = 0, static shared_null = <same as static member of an already seen type>}} (gdb) bt #0 0x00000008023af496 in QHashData::detach_helper (this=0x8038bf230, node_duplicate= 0x801187640 <QHash<QMetaObject const*, int>::duplicateNode(QHashData::Node*, void*)>, node_delete=0x801186e50 <QHash<QMetaObject const*, int>::deleteNode2(QHashData::Node*)>, nodeSize=32, nodeAlign=8) at tools/qhash.cpp:531 #1 0x00000008011875ff in QHash<QMetaObject const*, int>::detach_helper ( this=0x801359558 <QQmlTypePrivate::attachedPropertyIds>) at /usr/local/include/qt5/QtCore/qhash.h:599 #2 0x0000000801187509 in QHash<QMetaObject const*, int>::detach ( this=0x801359558 <QQmlTypePrivate::attachedPropertyIds>) at /usr/local/include/qt5/QtCore/qhash.h:275 #3 0x0000000801182010 in QHash<QMetaObject const*, int>::find ( this=0x801359558 <QQmlTypePrivate::attachedPropertyIds>, akey=@0x805ad9518: 0x80134f120 <QQmlComponent::staticMetaObject>) at /usr/local/include/qt5/QtCore/qhash.h:901 #4 0x00000008011778c6 in QQmlType::~QQmlType (this=0x805b35d50) at qml/qqmlmetatype.cpp:576 #5 0x0000000000220bb9 in QHashNode<QQmlType, QHashDummyValue>::~QHashNode (this=0x805b35d40) at /usr/local/include/qt5/QtCore/qhash.h:149 #6 0x0000000000220abd in QHash<QQmlType, QHashDummyValue>::deleteNode2 (node=0x805b35d40) at /usr/local/include/qt5/QtCore/qhash.h:547 #7 0x00000008023af69a in QHashData::free_helper (this=0x805b32510, node_delete=0x220aa0 <QHash<QQmlType, QHashDummyValue>::deleteNode2(QHashData::Node*)>) at tools/qhash.cpp:572 #8 0x0000000000220b23 in QHash<QQmlType, QHashDummyValue>::freeData (this=0x805b35d38, x=0x805b32510) at /usr/local/include/qt5/QtCore/qhash.h:587 #9 0x00000000002214ba in QHash<QQmlType, QHashDummyValue>::~QHash (this=0x805b35d38) at /usr/local/include/qt5/QtCore/qhash.h:254 #10 0x000000000021f265 in QSet<QQmlType>::~QSet (this=0x805b35d38) at /usr/local/include/qt5/QtCore/qdatastream.h:60 #11 0x00000000002278c3 in QHashNode<QByteArray, QSet<QQmlType> >::~QHashNode (this=0x805b35d20) at /usr/local/include/qt5/QtCore/qhash.h:149 #12 0x000000000022786d in QHash<QByteArray, QSet<QQmlType> >::deleteNode2 (node=0x805b35d20) at /usr/local/include/qt5/QtCore/qhash.h:547 #13 0x00000008023af69a in QHashData::free_helper (this=0x8038c0100, node_delete=0x227850 <QHash<QByteArray, QSet<QQmlType> >::deleteNode2(QHashData::Node*)>) at tools/qhash.cpp:572 #14 0x0000000000227843 in QHash<QByteArray, QSet<QQmlType> >::freeData (this=0x230038 <qmlTypesByCppName>, x=0x8038c0100) at /usr/local/include/qt5/QtCore/qhash.h:587 #15 0x000000000021816a in QHash<QByteArray, QSet<QQmlType> >::~QHash (this=0x230038 <qmlTypesByCppName>) at /usr/local/include/qt5/QtCore/qhash.h:254 #16 0x00000008028b8571 in __cxa_finalize (dso=0x0) at /export/poudriere/jails/pkgbuild/usr/src/lib/libc/stdlib/atexit.c:237 #17 0x00000008028496b1 in exit (status=0) at /export/poudriere/jails/pkgbuild/usr/src/lib/libc/stdlib/exit.c:74 #18 0x0000000000211116 in _start (ap=<optimized out>, cleanup=<optimized out>) at /export/poudriere/jails/pkgbuild/usr/src/lib/csu/amd64/crt1.c:76
The ultimate cause for the failure was broken C++ destructor order in FreeBSD. kib@ is going to commit the fix soon-ish.
https://svnweb.freebsd.org/changeset/base/346225
(In reply to Alexander Kabaev from comment #16) The same failure for FBSD-Current (rev 347487) for plasma5-kwin-5.15.5 - qmlplugindump is 12G size & killed during setup simultaneously.
I'm facing a similar problem on r342378. I'm build the latest port svn checkout (June 10) on r342378 with poudriere and (after isolating it) see the problem that building x11-wm/plasma5-kwin runs reproducible out of swap during 'configure' phase.
Yes, it's here as well qmlplugindump growing to 12G before the system halts due to out of swap space.
(In reply to mikhail.rokhin from comment #17) Mikhail, does your comment mean that the issue is still there, even after the changes of Alexander in r346225? I was thinking in update my poudriere oven to this version, but ...
The same happens when one build the port misc/kf5-purpose and also again qmlplugindump is causing the out of swap (I have 24 GByte of swap). I'm attaching the log of poudriere.
Created attachment 205010 [details] poudriere log of building misc/kf5-purpose
Please, can someone change 'Importance: --- Affects Only Me' to something more accurate. Thanks.
I updated the host and the poudriere jail to r349041 (Jun 15) and the port builds fine, as well all dependencies of x11/kde5.
(In reply to Matthias Apitz from comment #24) Cool, so it is fixed for you completely now? mfg Tobias
The port builds. There are errors in the log file, like: -- Found Xwayland: /usr/local/bin/Xwayland -- Could NOT find Libcap (missing: SETCAP_EXECUTABLE Libcap_LIBRARIES) -- Found QtQuick-QMLModule: TRUE (found version "") -- qmlplugindump failed for QtQuick.Controls. -- Could NOT find QtQuick.Controls-QMLModule (missing: QtQuick.Controls-QMLModule_FOUND) -- Found QtQuick.Layouts-QMLModule: TRUE (found version "") -- qmlplugindump failed for QtQuick.VirtualKeyboard. -- Could NOT find QtQuick.VirtualKeyboard-QMLModule (missing: QtQuick.VirtualKeyboard-QMLModule_FOUND) -- Found QtQuick.Window-QMLModule: TRUE (found version "") -- Found QtMultimedia-QMLModule: TRUE (found version "") -- Found org.kde.kquickcontrolsaddons-QMLModule: TRUE (found version "") -- qmlplugindump failed for org.kde.plasma.core. -- Could NOT find org.kde.plasma.core-QMLModule (missing: org.kde.plasma.core-QMLModule_FOUND) -- qmlplugindump failed for org.kde.plasma.components. -- Could NOT find org.kde.plasma.components-QMLModule (missing: org.kde.plasma.components-QMLModule_FOUND) -- Looking for include file unistd.h ... -- Performing Test COMPILER_HAS_DEPRECATED_ATTR -- Performing Test COMPILER_HAS_DEPRECATED_ATTR - Success -- qmlplugindump failed for org.kde.plasma.core. -- Could NOT find org.kde.plasma.core-QMLModule (missing: org.kde.plasma.core-QMLModule_FOUND) Don't know, if they're important, But, I think the PR can be closed.
Closing based on - there was a bug elsewhere causing this problem - last comment reports problem fixed.