Hi Simon, I took a look and I'm pretty sure I'm right ;-). BTW I'm using 5.4 branch (sha1 f9ee33f96), is a little bit old, but I bet nobody fixed it. The same problem is in previous releases.
So, the singletons are deleted in QQmlEngine::~QQmlEngine():910 The other active objects are deleted in MemoryManager::sweep(*true*) which is called by MemoryManager::~MemoryManager() which is called by ExecutionEngine::~ExecutionEngine() which is called by QV8Engine::~QV8Engine() which is called by QJSEngine::~QJSEngine() which is called *after* QQmlEngine::~QQmlEngine() Check the call-stack: 0 MyObject::~MyObject myobject.cpp 44 0x7fffd141eb4b 1 MyObject::~MyObject myobject.cpp 46 0x7fffd141ec8a 2 (anonymous namespace)::QObjectDeleter::~QObjectDeleter qv4qobjectwrapper.cpp 1018 0x7ffff5f79ee1 f9ee33f96f9ee33f96 3 (anonymous namespace)::QObjectDeleter::~QObjectDeleter qv4qobjectwrapper.cpp 1021 0x7ffff5f79f2e 4 QV4::MemoryManager::sweep qv4mm.cpp 377 0x7ffff5efd080 5 QV4::MemoryManager::~MemoryManager qv4mm.cpp 515 0x7ffff5efda18 6 QV4::ExecutionEngine::~ExecutionEngine qv4engine.cpp 421 0x7ffff5ee4f54 7 QV8Engine::~QV8Engine qv8engine.cpp 116 0x7ffff606b7f2 8 QV8Engine::~QV8Engine qv8engine.cpp 117 0x7ffff606b87e 9 QJSEngine::~QJSEngine qjsengine.cpp 203 0x7ffff5e64b1e 10 QQmlEngine::~QQmlEngine qqmlengine.cpp 893 0x7ffff5fb0b5d 11 QQmlEngine::~QQmlEngine qqmlengine.cpp 916 0x7ffff5fb0b8c 12 QObjectPrivate::deleteChildren qobject.cpp 1943 0x7ffff599efd0 13 QObject::~QObject qobject.cpp 1034 0x7ffff599d760 14 QWindow::~QWindow qwindow.cpp 210 0x7ffff63f5bdc 15 QQuickWindow::~QQuickWindow qquickwindow.cpp 1099 0x7ffff6bc0353 16 QQuickView::~QQuickView qquickview.cpp 220 0x7ffff6c9fe35 17 main main.cpp 12 0x4021fb IMHO the sequence from QQmlEngine::~QQmlEngine():910 should be moved after/in MemoryManager::~MemoryManager ... Cheers, BogDan. ________________________________ From: Hausmann Simon <simon.hausm...@digia.com> To: Chris Adams <chris.ad...@qinetic.com.au>; BogDan <bog_dan...@yahoo.com> Cc: Qt Development Group <development@qt-project.org> Sent: Monday, September 22, 2014 9:33 AM Subject: SV: [Development] [QML] Singletons are deleted before the other objects Hi, In gener‎al I agree with Chris. However I'm a little puzzled that this is happening. If you take a look at the QQmlEngine destructor you can see that singletons are deleted last. So I'm wondering what is happening in your app Bogdan. Can you create a minimal test case? Thanks, Simon Fra: Chris Adams Sendt: 05:45 mandag 22. september 2014 Til: BogDan Kopi: Qt Development Group Emne: Re: [Development] [QML] Singletons are deleted before the other objects Hi, On Fri, Sep 19, 2014 at 10:37 PM, BogDan <bog_dan...@yahoo.com> wrote: Hello folks, > > Singletons registered using qmlRegisterSingletonType, are deleted *before* >the other active objects. I consider it to be wrong because some of the active >objects may still need to access the singletons in their destructor ... > >IMHO singletons should be the very last objects deleted (also in the reverse >order). > I tend to agree that they should be deleted last. Enforcing deletion in the reverse order to how they were registered might impose some slight performance penalty at instantiation time, however, depending on how the deletion order is determined at cleanup time, since they are instantiated on demand (and hence possibly out-of-order). >Is there any reason why they are deleted before the other active objects? >Or this is just a bug? > I don't believe that there is any particular reason for deleting them prior to other active objects, but perhaps Simon or Lars can correct me on this point. Nonetheless, I don't think that the current behaviour is a bug, per-se, as the destruction order was never documented or guaranteed, as far as I know. Cheers, Chris. >Cheers, >BogDan. > >_______________________________________________ >Development mailing list >Development@qt-project.org >http://lists.qt-project.org/mailman/listinfo/development > _______________________________________________ Development mailing list Development@qt-project.org http://lists.qt-project.org/mailman/listinfo/development