Details
-
Bug
-
Resolution: Unresolved
-
P2: Important
-
None
-
6.10
-
82015992c (dev), 8d81da76b (6.9), 2dffd2e81 (tqtc/lts-6.8), 99b2f0ca2 (tqtc/lts-6.5)
Description
When changing QObject::d_ptr from QScopedPointer to unique_ptr, an libc++ build of tst_QWidget crashes in }}. It appears to be due to https://github.com/llvm/llvm-project/issues/108149, but that's a WontFix, because as upstream maintains, whether {{~unique_ptr does reset() or delete get() is not observable by correct programs.
Stack trace:
1: ********* Start testing of tst_QWidget ********* 1: Config: Using QtTest library 6.10.0, Qt 6.10.0 (x86_64-little_endian-lp64 shared (dynamic) debug build; by Clang 15.0.3 (github.com:llvm/llvm-project.git 48b23aa469b8cfdb6cde1c55bf3361cabcdef6bc)), ubuntu 20.04 1: PASS : tst_QWidget::initTestCase() 1: PASS : tst_QWidget::nativeWindowAttribute() 1: PASS : tst_QWidget::addActionOverloads() 1: QDEBUG : tst_QWidget::getSetCheck() QRect(10,10 100x100) 1: QDEBUG : tst_QWidget::getSetCheck() QRect(0,0 0x0) 1: PASS : tst_QWidget::getSetCheck() 1: PASS : tst_QWidget::fontPropagation() 1: PASS : tst_QWidget::fontPropagation2() 1: PASS : tst_QWidget::fontPropagation3() 1: PASS : tst_QWidget::fontPropagationDynamic() 1: PASS : tst_QWidget::palettePropagation() 1: PASS : tst_QWidget::palettePropagation2() 1: Received signal 11 (SIGSEGV), code 1, for address 0x0000000000000058 1: palettePropagation3 function time: 34ms, total time: 158ms 1: 1: === Stack trace === 1: [New LWP 128102] 1: [New LWP 128103] 1: [New LWP 128104] 1: Dwarf Error: DW_FORM_strx1 found in non-DWO CU [in module /home/marc/Qt/qtbase-submit-build-clang/tests/auto/widgets/kernel/qwidget/tst_qwidget] 1: Dwarf Error: DW_FORM_strx1 found in non-DWO CU [in module /home/marc/Qt/qtbase-submit-build-clang/lib/libQt6Test.so.6] 1: Dwarf Error: DW_FORM_strx1 found in non-DWO CU [in module /home/marc/Qt/qtbase-submit-build-clang/lib/libQt6Widgets.so.6] 1: Dwarf Error: DW_FORM_strx1 found in non-DWO CU [in module /home/marc/Qt/qtbase-submit-build-clang/lib/libQt6Gui.so.6] 1: Dwarf Error: DW_FORM_strx1 found in non-DWO CU [in module /home/marc/Qt/qtbase-submit-build-clang/lib/libQt6Core.so.6] 1: [Thread debugging using libthread_db enabled] 1: Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". 1: Dwarf Error: DW_FORM_strx1 found in non-DWO CU [in module /home/marc/Qt/qtbase-submit-build-clang/lib/libQt6DBus.so.6] 1: Dwarf Error: DW_FORM_strx1 found in non-DWO CU [in module /home/marc/Qt/qtbase-submit-build-clang/plugins/platforms/libqxcb.so] 1: Dwarf Error: DW_FORM_strx1 found in non-DWO CU [in module /home/marc/Qt/qtbase-submit-build-clang/plugins/platforms/../../lib/libQt6XcbQpa.so.6] 1: Dwarf Error: DW_FORM_strx1 found in non-DWO CU [in module /home/marc/Qt/qtbase-submit-build-clang/plugins/platforminputcontexts/libcomposeplatforminputcontextplugin.so] 1: 0x00007f760182bc7f in __GI___wait4 (pid=128106, stat_loc=0x0, options=0, usage=0x0) at ../sysdeps/unix/sysv/linux/wait4.c:27 1: 27 ../sysdeps/unix/sysv/linux/wait4.c: No such file or directory. 1: warning: File "/d/gcc/11/lib64/libstdc++.so.6.0.29-gdb.py" auto-loading has been declined by your `auto-load safe-path' set to "$debugdir:$datadir/auto-load". 1: To enable execution of this file add 1: add-auto-load-safe-path /d/gcc/11/lib64/libstdc++.so.6.0.29-gdb.py 1: line to your configuration file "/home/marc/.gdbinit". 1: To completely disable this security protection add 1: set auto-load safe-path / 1: line to your configuration file "/home/marc/.gdbinit". 1: For more information about this security protection see the 1: "Auto-loading safe path" section in the GDB manual. E.g., run from the shell: 1: info "(gdb)Auto-loading safe path" 1: 1: Thread 4 (Thread 0x7f75fca05700 (LWP 128104)): 1: #0 futex_abstimed_wait_cancelable (private=<optimized out>, abstime=0x7f75fca048d0, clockid=<optimized out>, expected=0, futex_word=0x7fffcc756800) at ../sysdeps/nptl/futex-internal.h:320 1: #1 __pthread_cond_wait_common (abstime=0x7f75fca048d0, clockid=<optimized out>, mutex=0x7fffcc7567b0, cond=0x7fffcc7567d8) at pthread_cond_wait.c:520 1: #2 __pthread_cond_clockwait (abstime=0x7f75fca048d0, clockid=<optimized out>, mutex=0x7fffcc7567b0, cond=0x7fffcc7567d8) at pthread_cond_wait.c:686 1: #3 __pthread_cond_clockwait (cond=0x7fffcc7567d8, mutex=0x7fffcc7567b0, clockid=<optimized out>, abstime=0x7f75fca048d0) at pthread_cond_wait.c:674 1: #4 0x00007f76047773e4 in std::__1::condition_variable::__do_timed_wait(std::__1::unique_lock<std::__1::mutex>&, std::__1::chrono::time_point<std::__1::chrono::steady_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > >) () from /home/marc/Qt/qtbase-submit-build-clang/lib/libQt6Test.so.6 1: #5 0x00007f7604776f92 in std::__1::cv_status std::__1::condition_variable::wait_until<std::__1::chrono::steady_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > >(std::__1::unique_lock<std::__1::mutex>&, std::__1::chrono::time_point<std::__1::chrono::steady_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > > const&) () from /home/marc/Qt/qtbase-submit-build-clang/lib/libQt6Test.so.6 1: #6 0x00007f7604776dbe in bool std::__1::condition_variable::wait_until<std::__1::chrono::steady_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> >, QTest::WatchDog::waitFor(std::__1::unique_lock<std::__1::mutex>&, QTest::WatchDog::Expectation)::{lambda()#1}>(std::__1::unique_lock<std::__1::mutex>&, std::__1::chrono::time_point<std::__1::chrono::steady_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > > const&, QTest::WatchDog::waitFor(std::__1::unique_lock<std::__1::mutex>&, QTest::WatchDog::Expectation)::{lambda()#1}) () from /home/marc/Qt/qtbase-submit-build-clang/lib/libQt6Test.so.6 1: #7 0x00007f7604776ca8 in bool std::__1::condition_variable::wait_for[abi:v15003]<long long, std::__1::ratio<1l, 1000l>, QTest::WatchDog::waitFor(std::__1::unique_lock<std::__1::mutex>&, QTest::WatchDog::Expectation)::{lambda()#1}>(std::__1::unique_lock<std::__1::mutex>&, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000l> > const&, QTest::WatchDog::waitFor(std::__1::unique_lock<std::__1::mutex>&, QTest::WatchDog::Expectation)::{lambda()#1}) () from /home/marc/Qt/qtbase-submit-build-clang/lib/libQt6Test.so.6 1: #8 0x00007f7604776b08 in QTest::WatchDog::waitFor(std::__1::unique_lock<std::__1::mutex>&, QTest::WatchDog::Expectation) () from /home/marc/Qt/qtbase-submit-build-clang/lib/libQt6Test.so.6 1: #9 0x00007f760477672f in QTest::WatchDog::run() () from /home/marc/Qt/qtbase-submit-build-clang/lib/libQt6Test.so.6 1: #10 0x00007f76021c6fed in QThreadPrivate::start(void*)::$_1::operator()() const () from /home/marc/Qt/qtbase-submit-build-clang/lib/libQt6Core.so.6 1: #11 0x00007f76021c5255 in void (anonymous namespace)::terminate_on_exception<QThreadPrivate::start(void*)::$_1>(QThreadPrivate::start(void*)::$_1&&) () from /home/marc/Qt/qtbase-submit-build-clang/lib/libQt6Core.so.6 1: #12 0x00007f76021c51b0 in QThreadPrivate::start(void*) () from /home/marc/Qt/qtbase-submit-build-clang/lib/libQt6Core.so.6 1: #13 0x00007f7601ba9609 in start_thread (arg=<optimized out>) at pthread_create.c:477 1: #14 0x00007f7601868353 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95 1: 1: Thread 3 (Thread 0x7f75fd206700 (LWP 128103)): 1: #0 0x00007f760185bbbf in __GI___poll (fds=fds@entry=0x7f75fd205a18, nfds=nfds@entry=1, timeout=timeout@entry=-1) at ../sysdeps/unix/sysv/linux/poll.c:29 1: #1 0x00007f75fee02c1a in poll (__timeout=-1, __nfds=1, __fds=0x7f75fd205a18) at /usr/include/x86_64-linux-gnu/bits/poll2.h:46 1: #2 _xcb_conn_wait (c=c@entry=0x564c3586fe40, cond=cond@entry=0x564c3586fe80, vector=vector@entry=0x0, count=count@entry=0x0) at ../../src/xcb_conn.c:480 1: #3 0x00007f75fee0490a in xcb_wait_for_event (c=0x564c3586fe40) at ../../src/xcb_in.c:697 1: #4 0x00007f75fe172d61 in QXcbEventQueue::run() () from /home/marc/Qt/qtbase-submit-build-clang/plugins/platforms/../../lib/libQt6XcbQpa.so.6 1: #5 0x00007f76021c6fed in QThreadPrivate::start(void*)::$_1::operator()() const () from /home/marc/Qt/qtbase-submit-build-clang/lib/libQt6Core.so.6 1: #6 0x00007f76021c5255 in void (anonymous namespace)::terminate_on_exception<QThreadPrivate::start(void*)::$_1>(QThreadPrivate::start(void*)::$_1&&) () from /home/marc/Qt/qtbase-submit-build-clang/lib/libQt6Core.so.6 1: #7 0x00007f76021c51b0 in QThreadPrivate::start(void*) () from /home/marc/Qt/qtbase-submit-build-clang/lib/libQt6Core.so.6 1: #8 0x00007f7601ba9609 in start_thread (arg=<optimized out>) at pthread_create.c:477 1: #9 0x00007f7601868353 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95 1: 1: Thread 2 (Thread 0x7f75fda07700 (LWP 128102)): 1: #0 0x00007f760185bbbf in __GI___poll (fds=0x564c3586cd80, nfds=3, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29 1: #1 0x00007f76014ce36e in ?? () from /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0 1: #2 0x00007f76014ce4a3 in g_main_context_iteration () from /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0 1: #3 0x00007f76023f835f in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /home/marc/Qt/qtbase-submit-build-clang/lib/libQt6Core.so.6 1: #4 0x00007f7601e38773 in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /home/marc/Qt/qtbase-submit-build-clang/lib/libQt6Core.so.6 1: #5 0x00007f7601e38a35 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /home/marc/Qt/qtbase-submit-build-clang/lib/libQt6Core.so.6 1: #6 0x00007f760205d008 in QThread::exec() () from /home/marc/Qt/qtbase-submit-build-clang/lib/libQt6Core.so.6 1: #7 0x00007f76012b76aa in QDBusConnectionManager::run() () from /home/marc/Qt/qtbase-submit-build-clang/lib/libQt6DBus.so.6 1: #8 0x00007f76021c6fed in QThreadPrivate::start(void*)::$_1::operator()() const () from /home/marc/Qt/qtbase-submit-build-clang/lib/libQt6Core.so.6 1: #9 0x00007f76021c5255 in void (anonymous namespace)::terminate_on_exception<QThreadPrivate::start(void*)::$_1>(QThreadPrivate::start(void*)::$_1&&) () from /home/marc/Qt/qtbase-submit-build-clang/lib/libQt6Core.so.6 1: #10 0x00007f76021c51b0 in QThreadPrivate::start(void*) () from /home/marc/Qt/qtbase-submit-build-clang/lib/libQt6Core.so.6 1: #11 0x00007f7601ba9609 in start_thread (arg=<optimized out>) at pthread_create.c:477 1: #12 0x00007f7601868353 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95 1: 1: Thread 1 (Thread 0x7f75fe83a940 (LWP 128101)): 1: #0 0x00007f760182bc7f in __GI___wait4 (pid=128106, stat_loc=0x0, options=0, usage=0x0) at ../sysdeps/unix/sysv/linux/wait4.c:27 1: #1 0x00007f760477f4ab in QTest::CrashHandler::generateStackTrace() () from /home/marc/Qt/qtbase-submit-build-clang/lib/libQt6Test.so.6 1: #2 0x00007f760477fcc6 in QTest::CrashHandler::FatalSignalHandler::actionHandler(int, siginfo_t*, void*) () from /home/marc/Qt/qtbase-submit-build-clang/lib/libQt6Test.so.6 1: #3 <signal handler called> 1: #4 0x00007f7601e0c662 in QThreadData* std::__1::__cxx_atomic_load[abi:v15003]<QThreadData*>(std::__1::__cxx_atomic_base_impl<QThreadData*> const*, std::__1::memory_order) () from /home/marc/Qt/qtbase-submit-build-clang/lib/libQt6Core.so.6 1: #5 0x00007f7601e0c5ff in std::__1::__atomic_base<QThreadData*, false>::load[abi:v15003](std::__1::memory_order) const () from /home/marc/Qt/qtbase-submit-build-clang/lib/libQt6Core.so.6 1: #6 0x00007f7601e0c5ce in QThreadData* QAtomicOps<QThreadData*>::loadAcquire<QThreadData*>(std::__1::atomic<QThreadData*> const&) () from /home/marc/Qt/qtbase-submit-build-clang/lib/libQt6Core.so.6 1: #7 0x00007f7601e07119 in QBasicAtomicPointer<QThreadData>::loadAcquire() const () from /home/marc/Qt/qtbase-submit-build-clang/lib/libQt6Core.so.6 1: #8 0x00007f7601e1d8fe in QCoreApplicationPrivate::lockThreadPostEventList(QObject*) () from /home/marc/Qt/qtbase-submit-build-clang/lib/libQt6Core.so.6 1: #9 0x00007f7601e1ec06 in QCoreApplication::removePostedEvents(QObject*, int) () from /home/marc/Qt/qtbase-submit-build-clang/lib/libQt6Core.so.6 1: #10 0x00007f7601ed507d in QObjectPrivate::~QObjectPrivate() () from /home/marc/Qt/qtbase-submit-build-clang/lib/libQt6Core.so.6 1: #11 0x00007f7602b9850b in QWindowPrivate::~QWindowPrivate() () from /home/marc/Qt/qtbase-submit-build-clang/lib/libQt6Gui.so.6 1: #12 0x00007f7603bcec59 in QWidgetWindowPrivate::~QWidgetWindowPrivate() () from /home/marc/Qt/qtbase-submit-build-clang/lib/libQt6Widgets.so.6 1: #13 0x00007f7603bcec7d in QWidgetWindowPrivate::~QWidgetWindowPrivate() () from /home/marc/Qt/qtbase-submit-build-clang/lib/libQt6Widgets.so.6 1: #14 0x00007f7601ef62f0 in std::__1::default_delete<QObjectData>::operator()[abi:v15003](QObjectData*) const () from /home/marc/Qt/qtbase-submit-build-clang/lib/libQt6Core.so.6 1: #15 0x00007f7601ef626e in std::__1::unique_ptr<QObjectData, std::__1::default_delete<QObjectData> >::reset[abi:v15003](QObjectData*) () from /home/marc/Qt/qtbase-submit-build-clang/lib/libQt6Core.so.6 1: #16 0x00007f7601ee9ead in std::__1::unique_ptr<QObjectData, std::__1::default_delete<QObjectData> >::~unique_ptr[abi:v15003]() () from /home/marc/Qt/qtbase-submit-build-clang/lib/libQt6Core.so.6 1: #17 0x00007f7601ed797d in QObject::~QObject() () from /home/marc/Qt/qtbase-submit-build-clang/lib/libQt6Core.so.6 1: #18 0x00007f7602b97937 in QWindow::~QWindow() () from /home/marc/Qt/qtbase-submit-build-clang/lib/libQt6Gui.so.6 1: #19 0x00007f7603bc8e0c in QWidgetWindow::~QWidgetWindow() () from /home/marc/Qt/qtbase-submit-build-clang/lib/libQt6Widgets.so.6 1: #20 0x00007f7603bc8e5d in QWidgetWindow::~QWidgetWindow() () from /home/marc/Qt/qtbase-submit-build-clang/lib/libQt6Widgets.so.6 1: #21 0x00007f7603b705e2 in QWidgetPrivate::deleteTLSysExtra() () from /home/marc/Qt/qtbase-submit-build-clang/lib/libQt6Widgets.so.6 1: #22 0x00007f7603b701b5 in QWidget::destroy(bool, bool) () from /home/marc/Qt/qtbase-submit-build-clang/lib/libQt6Widgets.so.6 1: #23 0x00007f7603b6f626 in QWidget::~QWidget() () from /home/marc/Qt/qtbase-submit-build-clang/lib/libQt6Widgets.so.6 1: #24 0x0000564c330e6321 in tst_QWidget::palettePropagation3() () 1: #25 0x0000564c3320cfe5 in tst_QWidget::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) () 1: #26 0x00007f7601e3f7b2 in QMetaMethodInvoker::invokeImpl(QMetaMethod, void*, Qt::ConnectionType, long long, void const* const*, char const* const*, QtPrivate::QMetaTypeInterface const* const*) () from /home/marc/Qt/qtbase-submit-build-clang/lib/libQt6Core.so.6 1: #27 0x00007f7601e46edf in QMetaMethod::invokeImpl(QMetaMethod, void*, Qt::ConnectionType, long long, void const* const*, char const* const*, QtPrivate::QMetaTypeInterface const* const*) () from /home/marc/Qt/qtbase-submit-build-clang/lib/libQt6Core.so.6 1: #28 0x00007f7604774fc9 in QMetaMethod::invoke<void> () from /home/marc/Qt/qtbase-submit-build-clang/lib/libQt6Test.so.6 1: #29 0x00007f7604774e81 in QMetaMethod::invoke<> () from /home/marc/Qt/qtbase-submit-build-clang/lib/libQt6Test.so.6 1: #30 0x00007f7604761795 in QTest::invokeTestMethodIfValid(QMetaMethod, QObject*) () from /home/marc/Qt/qtbase-submit-build-clang/lib/libQt6Test.so.6 1: #31 0x00007f7604760fca in QTest::TestMethods::invokeTestOnData(int) const () from /home/marc/Qt/qtbase-submit-build-clang/lib/libQt6Test.so.6 1: #32 0x00007f760476db6b in QTest::TestMethods::invokeTest(int, QLatin1String, std::__1::optional<QTest::WatchDog>&) const::$_6::operator()() const () from /home/marc/Qt/qtbase-submit-build-clang/lib/libQt6Test.so.6 1: #33 0x00007f76047628d0 in void QTest::runWithWatchdog<QTest::TestMethods::invokeTest(int, QLatin1String, std::__1::optional<QTest::WatchDog>&) const::$_6>(std::__1::optional<QTest::WatchDog>&, QTest::TestMethods::invokeTest(int, QLatin1String, std::__1::optional<QTest::WatchDog>&) const::$_6&&) () from /home/marc/Qt/qtbase-submit-build-clang/lib/libQt6Test.so.6 1: #34 0x00007f7604762186 in QTest::TestMethods::invokeTest(int, QLatin1String, std::__1::optional<QTest::WatchDog>&) const () from /home/marc/Qt/qtbase-submit-build-clang/lib/libQt6Test.so.6 1: #35 0x00007f7604763e7a in QTest::TestMethods::invokeTests(QObject*) const () from /home/marc/Qt/qtbase-submit-build-clang/lib/libQt6Test.so.6 1: #36 0x00007f7604764f9e in QTest::qRun() () from /home/marc/Qt/qtbase-submit-build-clang/lib/libQt6Test.so.6 1: #37 0x00007f7604764353 in QTest::qExec(QObject*, int, char**) () from /home/marc/Qt/qtbase-submit-build-clang/lib/libQt6Test.so.6 1: #38 0x0000564c3320ce25 in main ()
I don't have an ubsan build at hand on Clang (and GCC doesn't have that behaviour in ~unique_ptr, but I guess ubsan would complain here.
Attachments
Issue Links
- resulted from
-
QTBUG-132213 Add QT_NO_SCOPED_POINTER opt-out
-
- In Progress
-
Gerrit Reviews
For Gerrit Dashboard: QTBUG-137069 | ||||||
---|---|---|---|---|---|---|
# | Subject | Branch | Project | Status | CR | V |
647146,1 | Port QObject from QScopedPointer to std::unique_ptr | dev | qt/qtbase | Status: NEW | +1 | +1 |
649684,1 | tst_QScopedPointer: add a test for reset/delete ordering | tqtc/esm-5.15 | qt/tqtc-qtbase | Status: NEW | 0 | 0 |