Aurélien COUDERC
2024-08-13 22:10:02 UTC
Dear ARM porters,
I recently uploaded KDE Frameworks 6 packages (version 6.5.0) to unstable, paving the way for Plasma 6 and Qt6 based KDE applications.
All 72 source packages builds fine, including 51 of them running their upstream testsuite, but kf6-ktexttemplate fails its testsuite on arm64. [1]
2 tests are segfaulting:
The following tests FAILED:
2 - testbuiltins (SEGFAULT)
3 - testloadertags (SEGFAULT)
Errors while running CTest
See the full build logs at [2] and the stack traces below. Both tests crash deep inside the stack in an internal copy in the QVariant object.
Reverting the optimization level to -O1 makes the issue disappear, so this looks like a compiler bug.
As an additional data point, version 6.4.0 which in fact has exactly the same upstream code built successfully in experimental a couple of days ago. [3]
For now I’ll be setting -O1 for building the package on arm64, but if you’re interested in analysing and fixing the issue I’d prefer to be able to drop that and use the standard optimisation level.
[1] https://deb.li/kf6builds
[2] https://buildd.debian.org/status/fetch.php?pkg=kf6-ktexttemplate&arch=arm64&ver=6.5.0-1&stamp=1723536095&raw=0
[3] https://buildd.debian.org/status/fetch.php?pkg=kf6-ktexttemplate&arch=arm64&ver=6.4.0-1&stamp=1721388797&raw=0
Happy hacking,
--
Aurélien
########## testbuiltins SEGV ##########
2: [New LWP 2592652]
2: [Thread debugging using libthread_db enabled]
2: Using host libthread_db library "/lib/aarch64-linux-gnu/libthread_db.so.1".
2: 0x0000ffffa95525f0 in wait4 () from /lib/aarch64-linux-gnu/libc.so.6
2:
2: Thread 2 (Thread 0xffffa4a45d00 (LWP 2592652) "QtTest Watchdog"):
2: #0 0x0000ffffa94fc414 in ?? () from /lib/aarch64-linux-gnu/libc.so.6
2: #1 0x0000ffffa94ff6c4 in pthread_cond_clockwait () from /lib/aarch64-linux-gnu/libc.so.6
2: #2 0x0000ffffa9ea2294 in std::__condvar::wait_until (this=<optimized out>, __m=..., __clock=1, __abs_time=...) at /usr/include/c++/14/bits/std_mutex.h:185
2: #3 std::condition_variable::__wait_until_impl<std::chrono::duration<long, std::ratio<1l, 1000000000l> > > (__lock=..., this=<optimized out>, __atime=...) at /usr/include/c++/14/condition_variable:203
2: #4 std::condition_variable::wait_until<std::chrono::duration<long, std::ratio<1l, 1000000000l> > > (this=<optimized out>, __lock=..., __atime=...) at /usr/include/c++/14/condition_variable:113
2: #5 std::condition_variable::wait_until<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> >, QTest::WatchDog::waitFor(std::unique_lock<std::mutex>&, QTest::WatchDog::Expectation)::{lambda()#1}>(std::unique_lock<std::mutex>&, std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > const&, QTest::WatchDog::waitFor(std::unique_lock<std::mutex>&, QTest::WatchDog::Expectation)::{lambda()#1}) (this=<optimized out>, __lock=..., __atime=..., __p=...) at /usr/include/c++/14/condition_variable:154
2: #6 std::condition_variable::wait_for<long, std::ratio<1l, 1000l>, QTest::WatchDog::waitFor(std::unique_lock<std::mutex>&, QTest::WatchDog::Expectation)::{lambda()#1}>(std::unique_lock<std::mutex>&, std::chrono::duration<long, std::ratio<1l, 1000l> > const&, QTest::WatchDog::waitFor(std::unique_lock<std::mutex>&, QTest::WatchDog::Expectation)::{lambda()#1}) (this=<optimized out>, __lock=..., __rtime=..., __p=...) at /usr/include/c++/14/condition_variable:177
2: #7 QTest::WatchDog::waitFor (this=<optimized out>, m=..., e=454) at ./src/testlib/qtestcase.cpp:1241
2: #8 QTest::WatchDog::run (this=<optimized out>) at ./src/testlib/qtestcase.cpp:1305
2: #9 0x0000ffffa9b9ec74 in operator() (__closure=<optimized out>) at ./src/corelib/thread/qthread_unix.cpp:324
2: #10 (anonymous namespace)::terminate_on_exception<QThreadPrivate::start(void*)::<lambda()> > (t=...) at ./src/corelib/thread/qthread_unix.cpp:260
2: #11 QThreadPrivate::start (arg=0xaaaad5a49570) at ./src/corelib/thread/qthread_unix.cpp:283
2: #12 0x0000ffffa94ffe84 in ?? () from /lib/aarch64-linux-gnu/libc.so.6
2: #13 0x0000ffffa956678c in ?? () from /lib/aarch64-linux-gnu/libc.so.6
2:
2: Thread 1 (Thread 0xffffa9ef1020 (LWP 2592644) "testbuiltins_ex"):
2: #0 0x0000ffffa95525f0 in wait4 () from /lib/aarch64-linux-gnu/libc.so.6
2: #1 0x0000ffffa9ea8d40 in generateStackTrace() [clone .part.0] [clone .lto_priv.0] () at ./src/testlib/qtestcase.cpp:411
2: #2 0x0000ffffa9ea2590 in generateStackTrace () at ./src/testlib/qtestcase.cpp:375
2: #3 (anonymous namespace)::FatalSignalHandler::actionHandler (signum=11, info=<optimized out>) at ./src/testlib/qtestcase.cpp:2179
2: #4 <signal handler called>
2: #5 (anonymous namespace)::clonePrivate (other=...) at ./src/corelib/kernel/qvariant.cpp:304
2: #6 QVariant::operator= (this=0xffffed46d648, variant=...) at ./src/corelib/kernel/qvariant.cpp:1067
2: #7 QVariant::operator= (this=0xffffed46d648, variant=...) at ./src/corelib/kernel/qvariant.cpp:1061
2: #8 0x0000ffffa9aa4154 in operator() (__closure=<synthetic pointer>, dataPtr=<optimized out>) at ./src/corelib/kernel/qsequentialiterable.cpp:203
2: #9 QIterablePrivate::retrieveElement<QSequentialConstIterator::operator*() const::<lambda(void*)> > (type=..., callback=...) at ./src/corelib/kernel/qiterable_p.h:34
2: #10 QSequentialConstIterator::operator* (this=***@entry=0xffffed46d548) at ./src/corelib/kernel/qsequentialiterable.cpp:204
2: #11 0x0000ffffa41e7504 in ForNode::render (this=0xaaaad5a971d0, stream=<optimized out>, c=<optimized out>) at ./src/defaulttags/for.cpp:159
2: #12 0x0000ffffa9f37550 in KTextTemplate::NodeList::render (this=***@entry=0xaaaad5a9e278, stream=***@entry=0xffffed46d808, c=***@entry=0xffffed46d890) at ./src/lib/node.cpp:184
2: #13 0x0000ffffa9f4d044 in KTextTemplate::TemplateImpl::render (this=***@entry=0xaaaad5a99d80, stream=***@entry=0xffffed46d808, c=***@entry=0xffffed46d890) at ./src/lib/template.cpp:84
2: #14 0x0000ffffa9f4d858 in KTextTemplate::TemplateImpl::render (this=0xaaaad5a99d80, c=***@entry=0xffffed46d890) at ./src/lib/template.cpp:71
2: #15 0x0000aaaabda17aec in TestBuiltinSyntax::doTest (this=<optimized out>) at /usr/include/aarch64-linux-gnu/qt6/QtCore/qsharedpointer_impl.h:271
2: #16 0x0000ffffa9a64e50 in QMetaMethodInvoker::invokeImpl (self=..., target=0xffffed46e280, connectionType=***@entry=Qt::DirectConnection, paramCount=***@entry=1, parameters=***@entry=0xffffed46dcf0, typeNames=***@entry=0xffffed46dcf8, metaTypes=***@entry=0xffffed46dd00) at ./src/corelib/kernel/qmetaobject.cpp:2713
2: #17 0x0000ffffa9a6568c in QMetaMethod::invokeImpl (self=..., target=<optimized out>, connectionType=***@entry=Qt::DirectConnection, paramCount=***@entry=1, parameters=***@entry=0xffffed46dcf0, typeNames=***@entry=0xffffed46dcf8, metaTypes=***@entry=0xffffed46dd00) at ./src/corelib/kernel/qmetaobject.cpp:2552
2: #18 0x0000ffffa9ec8418 in QMetaMethod::invoke<>(QObject*, Qt::ConnectionType, QMetaMethodReturnArgument) const (c=Qt::DirectConnection, this=<optimized out>, obj=<optimized out>, r=...) at ./src/corelib/kernel/qmetaobject.h:148
2: #19 QMetaMethod::invoke<>(QObject*, Qt::ConnectionType) const (c=Qt::DirectConnection, this=<optimized out>, obj=<optimized out>) at ./src/corelib/kernel/qmetaobject.h:160
2: #20 QTest::TestMethods::invokeTestOnData (this=<optimized out>, index=-1444447928) at ./src/testlib/qtestcase.cpp:1136
2: #21 QTest::TestMethods::invokeTest(int, QLatin1String, QTest::WatchDog*) const [clone .isra.0] (this=***@entry=0xffffed46e060, index=***@entry=4, tag=..., watchDog=***@entry=0xaaaad5a49570) at ./src/testlib/qtestcase.cpp:1429
2: #22 0x0000ffffa9ea5f30 in QTest::TestMethods::invokeTests (this=0xffffed46e060, testObject=0xffffed46e280) at ./src/testlib/qtestcase.cpp:1767
2: #23 QTest::qRun () at ./src/testlib/qtestcase.cpp:2401
2: #24 0x0000ffffa9ea67b8 in QTest::qExec (testObject=***@entry=0xffffed46e280, argc=<optimized out>, argv=***@entry=0xffffed46e458) at ./src/testlib/qtestcase.cpp:2287
2: #25 0x0000aaaabda160a0 in main (argc=<optimized out>, argv=0xffffed46e458) at ./autotests/testbuiltins.cpp:1952
2: [Inferior 1 (process 2592644) detached]
2: === End of stack trace ===
#######################################
########## testloadertags SEGV ##########
3: [New LWP 2592653]
3: [Thread debugging using libthread_db enabled]
3: Using host libthread_db library "/lib/aarch64-linux-gnu/libthread_db.so.1".
3: 0x0000ffffba7125f0 in wait4 () from /lib/aarch64-linux-gnu/libc.so.6
3:
3: Thread 2 (Thread 0xffffb5c05d00 (LWP 2592653) "QtTest Watchdog"):
3: #0 0x0000ffffba6bc414 in ?? () from /lib/aarch64-linux-gnu/libc.so.6
3: #1 0x0000ffffba6bf0dc in pthread_cond_wait () from /lib/aarch64-linux-gnu/libc.so.6
3: #2 0x0000ffffbb06220c in std::condition_variable::wait<QTest::WatchDog::waitFor(std::unique_lock<std::mutex>&, QTest::WatchDog::Expectation)::{lambda()#1}>(std::unique_lock<std::mutex>&, QTest::WatchDog::waitFor(std::unique_lock<std::mutex>&, QTest::WatchDog::Expectation)::{lambda()#1}) (this=<optimized out>, __lock=..., __p=...) at /usr/include/c++/14/condition_variable:105
3: #3 QTest::WatchDog::waitFor (this=<optimized out>, m=..., e=33) at ./src/testlib/qtestcase.cpp:1245
3: #4 QTest::WatchDog::run (this=<optimized out>) at ./src/testlib/qtestcase.cpp:1305
3: #5 0x0000ffffbad5ec74 in operator() (__closure=<optimized out>) at ./src/corelib/thread/qthread_unix.cpp:324
3: #6 (anonymous namespace)::terminate_on_exception<QThreadPrivate::start(void*)::<lambda()> > (t=...) at ./src/corelib/thread/qthread_unix.cpp:260
3: #7 QThreadPrivate::start (arg=0xaaaaef843570) at ./src/corelib/thread/qthread_unix.cpp:283
3: #8 0x0000ffffba6bfe84 in ?? () from /lib/aarch64-linux-gnu/libc.so.6
3: #9 0x0000ffffba72678c in ?? () from /lib/aarch64-linux-gnu/libc.so.6
3:
3: Thread 1 (Thread 0xffffbb0b3020 (LWP 2592645) "testloadertags_"):
3: #0 0x0000ffffba7125f0 in wait4 () from /lib/aarch64-linux-gnu/libc.so.6
3: #1 0x0000ffffbb068d40 in generateStackTrace() [clone .part.0] [clone .lto_priv.0] () at ./src/testlib/qtestcase.cpp:411
3: #2 0x0000ffffbb062590 in generateStackTrace () at ./src/testlib/qtestcase.cpp:375
3: #3 (anonymous namespace)::FatalSignalHandler::actionHandler (signum=11, info=<optimized out>) at ./src/testlib/qtestcase.cpp:2179
3: #4 <signal handler called>
3: #5 (anonymous namespace)::clonePrivate (other=...) at ./src/corelib/kernel/qvariant.cpp:304
3: #6 QVariant::QVariant (this=<optimized out>, p=..., this=<optimized out>, p=...) at ./src/corelib/kernel/qvariant.cpp:542
3: #7 0x0000ffffb535c92c in QtPrivate::QGenericArrayOps<QVariant>::copyAppend (this=0xffffcc1e4f60, b=0x0, e=0x20) at /usr/include/aarch64-linux-gnu/qt6/QtCore/qarraydataops.h:341
3: #8 QArrayDataPointer<QVariant>::reallocateAndGrow (this=0xffffcc1e5050, where=<optimized out>, n=<optimized out>, old=0x0) at /usr/include/aarch64-linux-gnu/qt6/QtCore/qarraydatapointer.h:235
3: #9 0x0000ffffb535abac in QArrayDataPointer<QVariant>::detach (this=0xffffcc1e5050, old=0x0) at /usr/include/aarch64-linux-gnu/qt6/QtCore/qarraydatapointer.h:139
3: #10 QArrayDataPointer<QVariant>::detach (this=0xffffcc1e5050, old=0x0) at /usr/include/aarch64-linux-gnu/qt6/QtCore/qarraydatapointer.h:136
3: #11 QList<QVariant>::detach (this=0xffffcc1e5050) at /usr/include/aarch64-linux-gnu/qt6/QtCore/qlist.h:409
3: #12 QList<QVariant>::begin (this=0xffffcc1e5050) at /usr/include/aarch64-linux-gnu/qt6/QtCore/qlist.h:608
3: #13 BlockNodeFactory::getNode (this=<optimized out>, tagContent=..., p=0xffffcc1e5448) at ./src/loadertags/block.cpp:43
3: #14 0x0000ffffbb0fd994 in KTextTemplate::ParserPrivate::parse (this=0xaaaaef8ac050, parent=0xaaaaef8ab7c0, stopAt=...) at ./src/lib/parser.cpp:227
3: #15 0x0000ffffbb0febd4 in KTextTemplate::Parser::parse(KTextTemplate::TemplateImpl*, QList<QString> const&) () at ./src/lib/parser.cpp:154
3: #16 0x0000ffffbb10d354 in KTextTemplate::TemplatePrivate::compileString (this=***@entry=0xaaaaef8ad6b0, str=...) at ./src/lib/template.cpp:31
3: #17 0x0000ffffbb10d59c in KTextTemplate::TemplateImpl::setContent (this=<optimized out>, templateString=...) at ./src/lib/template.cpp:58
3: #18 0x0000ffffbb0e2df8 in KTextTemplate::Engine::newTemplate (this=0xaaaaef84d3c0, content=..., name=...) at /usr/include/aarch64-linux-gnu/qt6/QtCore/qsharedpointer_impl.h:271
3: #19 0x0000aaaadaee840c in TestLoaderTags::testExtendsTag_data (this=<optimized out>) at ./autotests/testloadertags.cpp:365
3: #20 0x0000ffffbac24e50 in QMetaMethodInvoker::invokeImpl (self=..., target=***@entry=0xffffcc1e6290, connectionType=***@entry=Qt::DirectConnection, paramCount=***@entry=1, parameters=***@entry=0xffffcc1e5b30, typeNames=***@entry=0xffffcc1e5b38, metaTypes=***@entry=0xffffcc1e5b40) at ./src/corelib/kernel/qmetaobject.cpp:2713
3: #21 0x0000ffffbac2568c in QMetaMethod::invokeImpl (self=..., target=***@entry=0xffffcc1e6290, connectionType=***@entry=Qt::DirectConnection, paramCount=***@entry=1, parameters=***@entry=0xffffcc1e5b30, typeNames=***@entry=0xffffcc1e5b38, metaTypes=***@entry=0xffffcc1e5b40) at ./src/corelib/kernel/qmetaobject.cpp:2552
3: #22 0x0000ffffbb05f91c in QMetaMethod::invoke<>(QObject*, Qt::ConnectionType, QMetaMethodReturnArgument) const (c=Qt::DirectConnection, this=<synthetic pointer>, obj=0xffffcc1e6290, r=...) at ./src/corelib/kernel/qmetaobject.h:148
3: #23 QMetaMethod::invoke<>(QObject*, Qt::ConnectionType) const (c=Qt::DirectConnection, this=<synthetic pointer>, obj=0xffffcc1e6290) at ./src/corelib/kernel/qmetaobject.h:160
3: #24 QTest::invokeMethod (obj=0xffffcc1e6290, methodName=<optimized out>) at ./src/testlib/qtestcase.cpp:548
3: #25 0x0000ffffbb087c2c in QTest::TestMethods::invokeTest(int, QLatin1String, QTest::WatchDog*) const [clone .isra.0] (this=***@entry=0xffffcc1e6070, index=***@entry=2, tag=..., watchDog=***@entry=0xaaaaef843570) at ./src/testlib/qtestcase.cpp:1402
3: #26 0x0000ffffbb065f30 in QTest::TestMethods::invokeTests (this=0xffffcc1e6070, testObject=0xffffcc1e6290) at ./src/testlib/qtestcase.cpp:1767
3: #27 QTest::qRun () at ./src/testlib/qtestcase.cpp:2401
3: #28 0x0000ffffbb0667b8 in QTest::qExec (testObject=***@entry=0xffffcc1e6290, argc=<optimized out>, argv=***@entry=0xffffcc1e6468) at ./src/testlib/qtestcase.cpp:2287
3: #29 0x0000aaaadaee3ba0 in main (argc=<optimized out>, argv=0xffffcc1e6468) at ./autotests/testloadertags.cpp:535
3: [Inferior 1 (process 2592645) detached]
3: === End of stack trace ===
#########################################
I recently uploaded KDE Frameworks 6 packages (version 6.5.0) to unstable, paving the way for Plasma 6 and Qt6 based KDE applications.
All 72 source packages builds fine, including 51 of them running their upstream testsuite, but kf6-ktexttemplate fails its testsuite on arm64. [1]
2 tests are segfaulting:
The following tests FAILED:
2 - testbuiltins (SEGFAULT)
3 - testloadertags (SEGFAULT)
Errors while running CTest
See the full build logs at [2] and the stack traces below. Both tests crash deep inside the stack in an internal copy in the QVariant object.
Reverting the optimization level to -O1 makes the issue disappear, so this looks like a compiler bug.
As an additional data point, version 6.4.0 which in fact has exactly the same upstream code built successfully in experimental a couple of days ago. [3]
For now I’ll be setting -O1 for building the package on arm64, but if you’re interested in analysing and fixing the issue I’d prefer to be able to drop that and use the standard optimisation level.
[1] https://deb.li/kf6builds
[2] https://buildd.debian.org/status/fetch.php?pkg=kf6-ktexttemplate&arch=arm64&ver=6.5.0-1&stamp=1723536095&raw=0
[3] https://buildd.debian.org/status/fetch.php?pkg=kf6-ktexttemplate&arch=arm64&ver=6.4.0-1&stamp=1721388797&raw=0
Happy hacking,
--
Aurélien
########## testbuiltins SEGV ##########
2: [New LWP 2592652]
2: [Thread debugging using libthread_db enabled]
2: Using host libthread_db library "/lib/aarch64-linux-gnu/libthread_db.so.1".
2: 0x0000ffffa95525f0 in wait4 () from /lib/aarch64-linux-gnu/libc.so.6
2:
2: Thread 2 (Thread 0xffffa4a45d00 (LWP 2592652) "QtTest Watchdog"):
2: #0 0x0000ffffa94fc414 in ?? () from /lib/aarch64-linux-gnu/libc.so.6
2: #1 0x0000ffffa94ff6c4 in pthread_cond_clockwait () from /lib/aarch64-linux-gnu/libc.so.6
2: #2 0x0000ffffa9ea2294 in std::__condvar::wait_until (this=<optimized out>, __m=..., __clock=1, __abs_time=...) at /usr/include/c++/14/bits/std_mutex.h:185
2: #3 std::condition_variable::__wait_until_impl<std::chrono::duration<long, std::ratio<1l, 1000000000l> > > (__lock=..., this=<optimized out>, __atime=...) at /usr/include/c++/14/condition_variable:203
2: #4 std::condition_variable::wait_until<std::chrono::duration<long, std::ratio<1l, 1000000000l> > > (this=<optimized out>, __lock=..., __atime=...) at /usr/include/c++/14/condition_variable:113
2: #5 std::condition_variable::wait_until<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> >, QTest::WatchDog::waitFor(std::unique_lock<std::mutex>&, QTest::WatchDog::Expectation)::{lambda()#1}>(std::unique_lock<std::mutex>&, std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > const&, QTest::WatchDog::waitFor(std::unique_lock<std::mutex>&, QTest::WatchDog::Expectation)::{lambda()#1}) (this=<optimized out>, __lock=..., __atime=..., __p=...) at /usr/include/c++/14/condition_variable:154
2: #6 std::condition_variable::wait_for<long, std::ratio<1l, 1000l>, QTest::WatchDog::waitFor(std::unique_lock<std::mutex>&, QTest::WatchDog::Expectation)::{lambda()#1}>(std::unique_lock<std::mutex>&, std::chrono::duration<long, std::ratio<1l, 1000l> > const&, QTest::WatchDog::waitFor(std::unique_lock<std::mutex>&, QTest::WatchDog::Expectation)::{lambda()#1}) (this=<optimized out>, __lock=..., __rtime=..., __p=...) at /usr/include/c++/14/condition_variable:177
2: #7 QTest::WatchDog::waitFor (this=<optimized out>, m=..., e=454) at ./src/testlib/qtestcase.cpp:1241
2: #8 QTest::WatchDog::run (this=<optimized out>) at ./src/testlib/qtestcase.cpp:1305
2: #9 0x0000ffffa9b9ec74 in operator() (__closure=<optimized out>) at ./src/corelib/thread/qthread_unix.cpp:324
2: #10 (anonymous namespace)::terminate_on_exception<QThreadPrivate::start(void*)::<lambda()> > (t=...) at ./src/corelib/thread/qthread_unix.cpp:260
2: #11 QThreadPrivate::start (arg=0xaaaad5a49570) at ./src/corelib/thread/qthread_unix.cpp:283
2: #12 0x0000ffffa94ffe84 in ?? () from /lib/aarch64-linux-gnu/libc.so.6
2: #13 0x0000ffffa956678c in ?? () from /lib/aarch64-linux-gnu/libc.so.6
2:
2: Thread 1 (Thread 0xffffa9ef1020 (LWP 2592644) "testbuiltins_ex"):
2: #0 0x0000ffffa95525f0 in wait4 () from /lib/aarch64-linux-gnu/libc.so.6
2: #1 0x0000ffffa9ea8d40 in generateStackTrace() [clone .part.0] [clone .lto_priv.0] () at ./src/testlib/qtestcase.cpp:411
2: #2 0x0000ffffa9ea2590 in generateStackTrace () at ./src/testlib/qtestcase.cpp:375
2: #3 (anonymous namespace)::FatalSignalHandler::actionHandler (signum=11, info=<optimized out>) at ./src/testlib/qtestcase.cpp:2179
2: #4 <signal handler called>
2: #5 (anonymous namespace)::clonePrivate (other=...) at ./src/corelib/kernel/qvariant.cpp:304
2: #6 QVariant::operator= (this=0xffffed46d648, variant=...) at ./src/corelib/kernel/qvariant.cpp:1067
2: #7 QVariant::operator= (this=0xffffed46d648, variant=...) at ./src/corelib/kernel/qvariant.cpp:1061
2: #8 0x0000ffffa9aa4154 in operator() (__closure=<synthetic pointer>, dataPtr=<optimized out>) at ./src/corelib/kernel/qsequentialiterable.cpp:203
2: #9 QIterablePrivate::retrieveElement<QSequentialConstIterator::operator*() const::<lambda(void*)> > (type=..., callback=...) at ./src/corelib/kernel/qiterable_p.h:34
2: #10 QSequentialConstIterator::operator* (this=***@entry=0xffffed46d548) at ./src/corelib/kernel/qsequentialiterable.cpp:204
2: #11 0x0000ffffa41e7504 in ForNode::render (this=0xaaaad5a971d0, stream=<optimized out>, c=<optimized out>) at ./src/defaulttags/for.cpp:159
2: #12 0x0000ffffa9f37550 in KTextTemplate::NodeList::render (this=***@entry=0xaaaad5a9e278, stream=***@entry=0xffffed46d808, c=***@entry=0xffffed46d890) at ./src/lib/node.cpp:184
2: #13 0x0000ffffa9f4d044 in KTextTemplate::TemplateImpl::render (this=***@entry=0xaaaad5a99d80, stream=***@entry=0xffffed46d808, c=***@entry=0xffffed46d890) at ./src/lib/template.cpp:84
2: #14 0x0000ffffa9f4d858 in KTextTemplate::TemplateImpl::render (this=0xaaaad5a99d80, c=***@entry=0xffffed46d890) at ./src/lib/template.cpp:71
2: #15 0x0000aaaabda17aec in TestBuiltinSyntax::doTest (this=<optimized out>) at /usr/include/aarch64-linux-gnu/qt6/QtCore/qsharedpointer_impl.h:271
2: #16 0x0000ffffa9a64e50 in QMetaMethodInvoker::invokeImpl (self=..., target=0xffffed46e280, connectionType=***@entry=Qt::DirectConnection, paramCount=***@entry=1, parameters=***@entry=0xffffed46dcf0, typeNames=***@entry=0xffffed46dcf8, metaTypes=***@entry=0xffffed46dd00) at ./src/corelib/kernel/qmetaobject.cpp:2713
2: #17 0x0000ffffa9a6568c in QMetaMethod::invokeImpl (self=..., target=<optimized out>, connectionType=***@entry=Qt::DirectConnection, paramCount=***@entry=1, parameters=***@entry=0xffffed46dcf0, typeNames=***@entry=0xffffed46dcf8, metaTypes=***@entry=0xffffed46dd00) at ./src/corelib/kernel/qmetaobject.cpp:2552
2: #18 0x0000ffffa9ec8418 in QMetaMethod::invoke<>(QObject*, Qt::ConnectionType, QMetaMethodReturnArgument) const (c=Qt::DirectConnection, this=<optimized out>, obj=<optimized out>, r=...) at ./src/corelib/kernel/qmetaobject.h:148
2: #19 QMetaMethod::invoke<>(QObject*, Qt::ConnectionType) const (c=Qt::DirectConnection, this=<optimized out>, obj=<optimized out>) at ./src/corelib/kernel/qmetaobject.h:160
2: #20 QTest::TestMethods::invokeTestOnData (this=<optimized out>, index=-1444447928) at ./src/testlib/qtestcase.cpp:1136
2: #21 QTest::TestMethods::invokeTest(int, QLatin1String, QTest::WatchDog*) const [clone .isra.0] (this=***@entry=0xffffed46e060, index=***@entry=4, tag=..., watchDog=***@entry=0xaaaad5a49570) at ./src/testlib/qtestcase.cpp:1429
2: #22 0x0000ffffa9ea5f30 in QTest::TestMethods::invokeTests (this=0xffffed46e060, testObject=0xffffed46e280) at ./src/testlib/qtestcase.cpp:1767
2: #23 QTest::qRun () at ./src/testlib/qtestcase.cpp:2401
2: #24 0x0000ffffa9ea67b8 in QTest::qExec (testObject=***@entry=0xffffed46e280, argc=<optimized out>, argv=***@entry=0xffffed46e458) at ./src/testlib/qtestcase.cpp:2287
2: #25 0x0000aaaabda160a0 in main (argc=<optimized out>, argv=0xffffed46e458) at ./autotests/testbuiltins.cpp:1952
2: [Inferior 1 (process 2592644) detached]
2: === End of stack trace ===
#######################################
########## testloadertags SEGV ##########
3: [New LWP 2592653]
3: [Thread debugging using libthread_db enabled]
3: Using host libthread_db library "/lib/aarch64-linux-gnu/libthread_db.so.1".
3: 0x0000ffffba7125f0 in wait4 () from /lib/aarch64-linux-gnu/libc.so.6
3:
3: Thread 2 (Thread 0xffffb5c05d00 (LWP 2592653) "QtTest Watchdog"):
3: #0 0x0000ffffba6bc414 in ?? () from /lib/aarch64-linux-gnu/libc.so.6
3: #1 0x0000ffffba6bf0dc in pthread_cond_wait () from /lib/aarch64-linux-gnu/libc.so.6
3: #2 0x0000ffffbb06220c in std::condition_variable::wait<QTest::WatchDog::waitFor(std::unique_lock<std::mutex>&, QTest::WatchDog::Expectation)::{lambda()#1}>(std::unique_lock<std::mutex>&, QTest::WatchDog::waitFor(std::unique_lock<std::mutex>&, QTest::WatchDog::Expectation)::{lambda()#1}) (this=<optimized out>, __lock=..., __p=...) at /usr/include/c++/14/condition_variable:105
3: #3 QTest::WatchDog::waitFor (this=<optimized out>, m=..., e=33) at ./src/testlib/qtestcase.cpp:1245
3: #4 QTest::WatchDog::run (this=<optimized out>) at ./src/testlib/qtestcase.cpp:1305
3: #5 0x0000ffffbad5ec74 in operator() (__closure=<optimized out>) at ./src/corelib/thread/qthread_unix.cpp:324
3: #6 (anonymous namespace)::terminate_on_exception<QThreadPrivate::start(void*)::<lambda()> > (t=...) at ./src/corelib/thread/qthread_unix.cpp:260
3: #7 QThreadPrivate::start (arg=0xaaaaef843570) at ./src/corelib/thread/qthread_unix.cpp:283
3: #8 0x0000ffffba6bfe84 in ?? () from /lib/aarch64-linux-gnu/libc.so.6
3: #9 0x0000ffffba72678c in ?? () from /lib/aarch64-linux-gnu/libc.so.6
3:
3: Thread 1 (Thread 0xffffbb0b3020 (LWP 2592645) "testloadertags_"):
3: #0 0x0000ffffba7125f0 in wait4 () from /lib/aarch64-linux-gnu/libc.so.6
3: #1 0x0000ffffbb068d40 in generateStackTrace() [clone .part.0] [clone .lto_priv.0] () at ./src/testlib/qtestcase.cpp:411
3: #2 0x0000ffffbb062590 in generateStackTrace () at ./src/testlib/qtestcase.cpp:375
3: #3 (anonymous namespace)::FatalSignalHandler::actionHandler (signum=11, info=<optimized out>) at ./src/testlib/qtestcase.cpp:2179
3: #4 <signal handler called>
3: #5 (anonymous namespace)::clonePrivate (other=...) at ./src/corelib/kernel/qvariant.cpp:304
3: #6 QVariant::QVariant (this=<optimized out>, p=..., this=<optimized out>, p=...) at ./src/corelib/kernel/qvariant.cpp:542
3: #7 0x0000ffffb535c92c in QtPrivate::QGenericArrayOps<QVariant>::copyAppend (this=0xffffcc1e4f60, b=0x0, e=0x20) at /usr/include/aarch64-linux-gnu/qt6/QtCore/qarraydataops.h:341
3: #8 QArrayDataPointer<QVariant>::reallocateAndGrow (this=0xffffcc1e5050, where=<optimized out>, n=<optimized out>, old=0x0) at /usr/include/aarch64-linux-gnu/qt6/QtCore/qarraydatapointer.h:235
3: #9 0x0000ffffb535abac in QArrayDataPointer<QVariant>::detach (this=0xffffcc1e5050, old=0x0) at /usr/include/aarch64-linux-gnu/qt6/QtCore/qarraydatapointer.h:139
3: #10 QArrayDataPointer<QVariant>::detach (this=0xffffcc1e5050, old=0x0) at /usr/include/aarch64-linux-gnu/qt6/QtCore/qarraydatapointer.h:136
3: #11 QList<QVariant>::detach (this=0xffffcc1e5050) at /usr/include/aarch64-linux-gnu/qt6/QtCore/qlist.h:409
3: #12 QList<QVariant>::begin (this=0xffffcc1e5050) at /usr/include/aarch64-linux-gnu/qt6/QtCore/qlist.h:608
3: #13 BlockNodeFactory::getNode (this=<optimized out>, tagContent=..., p=0xffffcc1e5448) at ./src/loadertags/block.cpp:43
3: #14 0x0000ffffbb0fd994 in KTextTemplate::ParserPrivate::parse (this=0xaaaaef8ac050, parent=0xaaaaef8ab7c0, stopAt=...) at ./src/lib/parser.cpp:227
3: #15 0x0000ffffbb0febd4 in KTextTemplate::Parser::parse(KTextTemplate::TemplateImpl*, QList<QString> const&) () at ./src/lib/parser.cpp:154
3: #16 0x0000ffffbb10d354 in KTextTemplate::TemplatePrivate::compileString (this=***@entry=0xaaaaef8ad6b0, str=...) at ./src/lib/template.cpp:31
3: #17 0x0000ffffbb10d59c in KTextTemplate::TemplateImpl::setContent (this=<optimized out>, templateString=...) at ./src/lib/template.cpp:58
3: #18 0x0000ffffbb0e2df8 in KTextTemplate::Engine::newTemplate (this=0xaaaaef84d3c0, content=..., name=...) at /usr/include/aarch64-linux-gnu/qt6/QtCore/qsharedpointer_impl.h:271
3: #19 0x0000aaaadaee840c in TestLoaderTags::testExtendsTag_data (this=<optimized out>) at ./autotests/testloadertags.cpp:365
3: #20 0x0000ffffbac24e50 in QMetaMethodInvoker::invokeImpl (self=..., target=***@entry=0xffffcc1e6290, connectionType=***@entry=Qt::DirectConnection, paramCount=***@entry=1, parameters=***@entry=0xffffcc1e5b30, typeNames=***@entry=0xffffcc1e5b38, metaTypes=***@entry=0xffffcc1e5b40) at ./src/corelib/kernel/qmetaobject.cpp:2713
3: #21 0x0000ffffbac2568c in QMetaMethod::invokeImpl (self=..., target=***@entry=0xffffcc1e6290, connectionType=***@entry=Qt::DirectConnection, paramCount=***@entry=1, parameters=***@entry=0xffffcc1e5b30, typeNames=***@entry=0xffffcc1e5b38, metaTypes=***@entry=0xffffcc1e5b40) at ./src/corelib/kernel/qmetaobject.cpp:2552
3: #22 0x0000ffffbb05f91c in QMetaMethod::invoke<>(QObject*, Qt::ConnectionType, QMetaMethodReturnArgument) const (c=Qt::DirectConnection, this=<synthetic pointer>, obj=0xffffcc1e6290, r=...) at ./src/corelib/kernel/qmetaobject.h:148
3: #23 QMetaMethod::invoke<>(QObject*, Qt::ConnectionType) const (c=Qt::DirectConnection, this=<synthetic pointer>, obj=0xffffcc1e6290) at ./src/corelib/kernel/qmetaobject.h:160
3: #24 QTest::invokeMethod (obj=0xffffcc1e6290, methodName=<optimized out>) at ./src/testlib/qtestcase.cpp:548
3: #25 0x0000ffffbb087c2c in QTest::TestMethods::invokeTest(int, QLatin1String, QTest::WatchDog*) const [clone .isra.0] (this=***@entry=0xffffcc1e6070, index=***@entry=2, tag=..., watchDog=***@entry=0xaaaaef843570) at ./src/testlib/qtestcase.cpp:1402
3: #26 0x0000ffffbb065f30 in QTest::TestMethods::invokeTests (this=0xffffcc1e6070, testObject=0xffffcc1e6290) at ./src/testlib/qtestcase.cpp:1767
3: #27 QTest::qRun () at ./src/testlib/qtestcase.cpp:2401
3: #28 0x0000ffffbb0667b8 in QTest::qExec (testObject=***@entry=0xffffcc1e6290, argc=<optimized out>, argv=***@entry=0xffffcc1e6468) at ./src/testlib/qtestcase.cpp:2287
3: #29 0x0000aaaadaee3ba0 in main (argc=<optimized out>, argv=0xffffcc1e6468) at ./autotests/testloadertags.cpp:535
3: [Inferior 1 (process 2592645) detached]
3: === End of stack trace ===
#########################################