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=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=this@entry=0xaaaad5a9e278, stream=stream@entry=0xffffed46d808, 
c=c@entry=0xffffed46d890) at ./src/lib/node.cpp:184
2: #13 0x0000ffffa9f4d044 in KTextTemplate::TemplateImpl::render 
(this=this@entry=0xaaaad5a99d80, stream=stream@entry=0xffffed46d808, 
c=c@entry=0xffffed46d890) at ./src/lib/template.cpp:84
2: #14 0x0000ffffa9f4d858 in KTextTemplate::TemplateImpl::render 
(this=0xaaaad5a99d80, c=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=connectionType@entry=Qt::DirectConnection, 
paramCount=paramCount@entry=1, parameters=parameters@entry=0xffffed46dcf0, 
typeNames=typeNames@entry=0xffffed46dcf8, 
metaTypes=metaTypes@entry=0xffffed46dd00) at 
./src/corelib/kernel/qmetaobject.cpp:2713
2: #17 0x0000ffffa9a6568c in QMetaMethod::invokeImpl (self=..., 
target=<optimized out>, 
connectionType=connectionType@entry=Qt::DirectConnection, 
paramCount=paramCount@entry=1, parameters=parameters@entry=0xffffed46dcf0, 
typeNames=typeNames@entry=0xffffed46dcf8, 
metaTypes=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=this@entry=0xffffed46e060, index=index@entry=4, 
tag=..., watchDog=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=testObject@entry=0xffffed46e280, argc=<optimized out>, 
argv=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=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=target@entry=0xffffcc1e6290, 
connectionType=connectionType@entry=Qt::DirectConnection, 
paramCount=paramCount@entry=1, parameters=parameters@entry=0xffffcc1e5b30, 
typeNames=typeNames@entry=0xffffcc1e5b38, 
metaTypes=metaTypes@entry=0xffffcc1e5b40) at 
./src/corelib/kernel/qmetaobject.cpp:2713
3: #21 0x0000ffffbac2568c in QMetaMethod::invokeImpl (self=..., 
target=target@entry=0xffffcc1e6290, 
connectionType=connectionType@entry=Qt::DirectConnection, 
paramCount=paramCount@entry=1, parameters=parameters@entry=0xffffcc1e5b30, 
typeNames=typeNames@entry=0xffffcc1e5b38, 
metaTypes=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=this@entry=0xffffcc1e6070, 
index=index@entry=2, tag=..., watchDog=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=testObject@entry=0xffffcc1e6290, argc=<optimized out>, 
argv=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 ===
#########################################






-- 
https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/pkg-kde-talk

Reply via email to