Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-82809

Segfault in PropertyUpdater::breakBinding() on application exit

    XMLWordPrintable

Details

    • 861f53d60cc2dd8bd8529c65863af881dbdd8db8 (qt/qtdeclarative/5.15)

    Description

      QML debugging is enabled. Only use this in a safe environment.
      AddressSanitizer:DEADLYSIGNAL
      =================================================================
      ==32076==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000008 (pc 0x00010add7e60 bp 0x7ffeea3ef190 sp 0x7ffeea3ef180 T0)
      ==32076==The signal is caused by a READ memory access.
      ==32076==Hint: address points to the zero page.
          #0 0x10add7e5f in QScopedPointer<QObjectData, QScopedPointerDeleter<QObjectData> >::operator->() const qscopedpointer.h:118
          #1 0x10add8054 in decltype(fp.operator->()) qGetPtrHelper<QScopedPointer<QObjectData, QScopedPointerDeleter<QObjectData> > const>(QScopedPointer<QObjectData, QScopedPointerDeleter<QObjectData> > const&) qglobal.h:1133
          #2 0x10b8c0758 in QQmlContext::d_func() const qqmlcontext.h:64
          #3 0x10b8c47a6 in QQmlContext::baseUrl() const qqmlcontext.cpp:496
          #4 0x10cb79b16 in PropertyUpdater::breakBinding() qqmldelegatemodel.cpp:940
          #5 0x10cc15495 in PropertyUpdater::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) moc_qqmldelegatemodel_p_p.cpp:513
          #6 0x10cc15644 in PropertyUpdater::qt_metacall(QMetaObject::Call, int, void**) moc_qqmldelegatemodel_p_p.cpp:550
          #7 0x106eca32c in QMetaObject::metacall(QObject*, QMetaObject::Call, int, void**) qmetaobject.cpp:316
          #8 0x106fcba60 in void doActivate<false>(QObject*, int, void**) qobject.cpp:3884
          #9 0x106fcbee1 in QMetaObject::activate(QObject*, int, int, void**) qobject.cpp:3931
          #10 0x10b8133f5 in QQmlVMEMetaObject::activate(QObject*, int, void**) qqmlvmemetaobject.cpp:1260
          #11 0x10b827f24 in QQmlVMEVariantQObjectPtr::objectDestroyed(QObject*) qqmlvmemetaobject.cpp:164
          #12 0x10b844a10 in QQmlData::destroyed(QObject*) qqmlengine.cpp:1948
          #13 0x10b843690 in QQmlData::destroyed(QAbstractDeclarativeData*, QObject*) qqmlengine.cpp:749
          #14 0x106fac144 in QObject::~QObject() qobject.cpp:1006
          #15 0x10cda9774 in CppObject::~CppObject() CppObject.h:8
          #16 0x10ce2dace in ComponentEntity::~ComponentEntity() ComponentEntity.cpp:28
          #17 0x10ce2db34 in ComponentEntity::~ComponentEntity() ComponentEntity.cpp:26
          #18 0x10ce41000 in QtSharedPointer::ExternalRefCountWithContiguousData<ComponentEntity>::deleter(QtSharedPointer::ExternalRefCountData*) qsharedpointer_impl.h:247
          #19 0x10cdb042a in QtSharedPointer::ExternalRefCountData::destroy() qsharedpointer_impl.h:148
          #20 0x10cdb54ac in QSharedPointer<ComponentEntity>::deref(QtSharedPointer::ExternalRefCountData*) qsharedpointer_impl.h:456
          #21 0x10cdb5468 in QSharedPointer<ComponentEntity>::deref() qsharedpointer_impl.h:451
          #22 0x10cdb5444 in QSharedPointer<ComponentEntity>::~QSharedPointer() qsharedpointer_impl.h:309
          #23 0x10cdb5424 in QSharedPointer<ComponentEntity>::~QSharedPointer() qsharedpointer_impl.h:309
          #24 0x10cdb5368 in QVector<QSharedPointer<ComponentEntity> >::destruct(QSharedPointer<ComponentEntity>*, QSharedPointer<ComponentEntity>*) qvector.h:372
          #25 0x10cdb531b in QVector<QSharedPointer<ComponentEntity> >::freeData(QTypedArrayData<QSharedPointer<ComponentEntity> >*) qvector.h:584
          #26 0x10cdb52a5 in QVector<QSharedPointer<ComponentEntity> >::~QVector() qvector.h:73
          #27 0x10cdb5244 in QVector<QSharedPointer<ComponentEntity> >::~QVector() qvector.h:73
          #28 0x10cf0c5b3 in Level::~Level() Level.cpp:90
          #29 0x10cf0c6a4 in Level::~Level() Level.cpp:88
          #30 0x10cf0c6c8 in Level::~Level() Level.cpp:88
          #31 0x106fadc05 in QObjectPrivate::deleteChildren() qobject.cpp:2109
          #32 0x106facdd2 in QObject::~QObject() qobject.cpp:1087
          #33 0x10cda9774 in CppObject::~CppObject() CppObject.h:8
          #34 0x10ce88ba4 in AbstractGame::~AbstractGame() AbstractGame.h:72
          #35 0x10ce88ee4 in Game::~Game() Game.cpp:61
          #36 0x10ce890f4 in Game::~Game() Game.cpp:57
          #37 0x10ce89118 in Game::~Game() Game.cpp:57
          #38 0x10cf816da in QScopedPointerDeleter<Game>::cleanup(Game*) qscopedpointer.h:60
          #39 0x10cf8168f in QScopedPointer<Game, QScopedPointerDeleter<Game> >::~QScopedPointer() qscopedpointer.h:107
          #40 0x10cf783a4 in QScopedPointer<Game, QScopedPointerDeleter<Game> >::~QScopedPointer() qscopedpointer.h:105
          #41 0x10cf78563 in SessionManager::~SessionManager() SessionManager.cpp:33
          #42 0x10cf785d4 in SessionManager::~SessionManager() SessionManager.cpp:31
          #43 0x10cf785f8 in SessionManager::~SessionManager() SessionManager.cpp:31
          #44 0x10582ec9a in QScopedPointerDeleter<SessionManager>::cleanup(SessionManager*) qscopedpointer.h:60
          #45 0x10582ec4f in QScopedPointer<SessionManager, QScopedPointerDeleter<SessionManager> >::~QScopedPointer() qscopedpointer.h:107
          #46 0x10580f5a4 in QScopedPointer<SessionManager, QScopedPointerDeleter<SessionManager> >::~QScopedPointer() qscopedpointer.h:105
          #47 0x10580f73c in TshnmApplication::~TshnmApplication() TshnmApplication.cpp:97
          #48 0x10580f964 in TshnmApplication::~TshnmApplication() TshnmApplication.cpp:95
          #49 0x105855673 in main main.cpp:18
          #50 0x10580f313 in start (tshnm-iso:x86_64+0x100001313)
      
      ==32076==Register values:
      rax = 0x0000000000000008  rbx = 0x00007ffeea3ef220  rcx = 0x0000100000000001  rdx = 0x0000100000000000
      rdi = 0x0000000000000008  rsi = 0x00001fffdd47de3c  rbp = 0x00007ffeea3ef190  rsp = 0x00007ffeea3ef180
      r8 = 0x00007ffeea3ef200   r9 = 0xb17c9f87a826005f  r10 = 0x000000010e57b768  r11 = 0x000000010b8c46b0
      r12 = 0x000000010cc3406a  r13 = 0x00007ffeea3ef320  r14 = 0x0000100000000000  r15 = 0x000000010cb795d0
      AddressSanitizer can not provide additional info.
      SUMMARY: AddressSanitizer: SEGV qscopedpointer.h:118 in QScopedPointer<QObjectData, QScopedPointerDeleter<QObjectData> >::operator->() const
      ==32076==ABORTING
      20:31:33: The program has unexpectedly finished.
      20:31:33: The process was ended forcefully.
      

      I started getting this on exit after introducing required properties into a delegate. See the attached project.

      Attachments

        Issue Links

          For Gerrit Dashboard: QTBUG-82809
          # Subject Branch Project Status CR V

          Activity

            People

              fabiankosmale Fabian Kosmale
              mitch_curtis Mitch Curtis
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Gerrit Reviews

                  There are no open Gerrit changes