QML Application crashing on exit
-
Hi people,
I have a QML / C++ hybrid application which is fairly complex with a few threads updating data in the background. Everything works flawlessly except when I make a certain ListView visible, populate it and then exit the application, the debugger breaks with an assertion failure at the following location:
@QDeclarativeAbstractBinding::~QDeclarativeAbstract Binding()
{
Q_ASSERT(m_prevBinding == 0); //<---- THIS GUY IS THE OFFENDING LINE
Q_ASSERT(m_mePtr == 0);
}@and here is the stack trace
@> QtCored4.dll!qt_message_output(QtMsgType msgType, const char * buf) Line 2270 C++
QtCored4.dll!qt_message(QtMsgType msgType, const char * msg, char * ap) Line 2328 + 0x12 bytes C++
QtCored4.dll!qFatal(const char * msg, ...) Line 2511 + 0xf bytes C++
QtCored4.dll!qt_assert(const char * assertion, const char * file, int line) Line 2027 + 0x16 bytes C++
QtDeclaratived4.dll!QDeclarativeAbstractBinding::~ QDeclarativeAbstractBinding() Line 293 + 0x1e bytes C++
QtDeclaratived4.dll!QDeclarativeCompiledBindingsPr ivate::Binding::~Binding() + 0x3d bytes C++
QtDeclaratived4.dll!eh vector destructor iterator'(void * ptr, unsigned int size, int count, void (void *)* pDtor) + 0x6b bytes C++ QtDeclaratived4.dll!QDeclarativeCompiledBindingsPr ivate::Binding::
vector deleting destructor'() + 0x26 bytes C++
QtDeclaratived4.dll!QDeclarativeCompiledBindings:: ~QDeclarativeCompiledBindings() Line 274 + 0x33 bytes C++
QtDeclaratived4.dll!QDeclarativeCompiledBindings::scalar deleting destructor'() + 0xf bytes C++ QtDeclaratived4.dll!QDeclarativeRefCount::release( ) Line 66 + 0x20 bytes C++ QtDeclaratived4.dll!QDeclarativeCompiledBindingsPr ivate::Binding::destroy() Line 328 C++ QtDeclaratived4.dll!QDeclarativeData::destroyed(QO bject * object) Line 1000 C++ QtDeclaratived4.dll!QDeclarativeData::destroyed(QA bstractDeclarativeData * d, QObject * o) Line 463 C++ QtCored4.dll!QObject::~QObject() Line 860 + 0x11 bytes C++ QtDeclaratived4.dll!QDeclarativeAbstractAnimation: :~QDeclarativeAbstractAnimation() Line 94 + 0x2a bytes C++ QtDeclaratived4.dll!QDeclarativePropertyAnimation: :~QDeclarativePropertyAnimation() Line 1827 + 0x8 bytes C++ QtDeclaratived4.dll!QDeclarativePrivate::QDeclarat iveElement<QDeclarativePropertyAnimation>::~QDecla rativeElement<QDeclarativePropertyAnimation>() Line 90 + 0xf bytes C++ QtDeclaratived4.dll!QDeclarativePrivate::QDeclarat iveElement<QDeclarativePropertyAnimation>::
scalar deleting destructor'() + 0xf bytes C++
QtCored4.dll!QObjectPrivate::deleteChildren() Line 1949 + 0x24 bytes C++
QtCored4.dll!QObject::~QObject() Line 947 C++
QtDeclaratived4.dll!QDeclarativeTransition::~QDecl arativeTransition() Line 168 + 0x9 bytes C++
QtDeclaratived4.dll!QDeclarativePrivate::QDeclarat iveElement<QDeclarativeTransition>::~QDeclarativeE lement<QDeclarativeTransition>() Line 90 + 0xf bytes C++
QtDeclaratived4.dll!QDeclarativePrivate::QDeclarat iveElement<QDeclarativeTransition>::scalar deleting destructor'() + 0xf bytes C++ QtCored4.dll!QObjectPrivate::deleteChildren() Line 1949 + 0x24 bytes C++ QtCored4.dll!QObject::~QObject() Line 947 C++ QtGuid4.dll!QGraphicsObject::~QGraphicsObject() + 0x48 bytes C++ QtDeclaratived4.dll!QDeclarativeItem::~QDeclarativ eItem() Line 1504 + 0x1f bytes C++ QtDeclaratived4.dll!QDeclarativeRectangle::~QDecla rativeRectangle() + 0xf bytes C++ QtDeclaratived4.dll!QDeclarativePrivate::QDeclarat iveElement<QDeclarativeRectangle>::~QDeclarativeEl ement<QDeclarativeRectangle>() Line 90 + 0xf bytes C++ QtDeclaratived4.dll!QDeclarativePrivate::QDeclarat iveElement<QDeclarativeRectangle>::
scalar deleting destructor'() + 0xf bytes C++
QtDeclaratived4.dll!QDeclarativeViewPrivate::~QDec larativeViewPrivate() Line 135 + 0x67 bytes C++
QtDeclaratived4.dll!QDeclarativeViewPrivate::scal ar deleting destructor'() + 0xf bytes C++ QtCored4.dll!QScopedPointerDeleter<QObjectData>::c leanup(QObjectData * pointer) Line 62 + 0x20 bytes C++ QtCored4.dll!QScopedPointer<QObjectData,QScopedPoi nterDeleter<QObjectData> >::~QScopedPointer<QObjectData,QScopedPointerDelet er<QObjectData> >() Line 100 + 0x9 bytes C++ QtCored4.dll!QObject::~QObject() Line 963 + 0x12 bytes C++ QtGuid4.dll!QWidget::~QWidget() Line 1620 + 0x25 bytes C++ QtGuid4.dll!QFrame::~QFrame() Line 242 + 0x8 bytes C++ QtGuid4.dll!QAbstractScrollArea::~QAbstractScrollA rea() Line 526 + 0xf bytes C++ QtGuid4.dll!QGraphicsView::~QGraphicsView() Line 1165 + 0xf bytes C++ QtDeclaratived4.dll!QDeclarativeView::~QDeclarativ eView() Line 300 + 0x9 bytes C++ MyApplication.exe!QDeclarativeView::
scalar deleting destructor'() + 0x10 bytes C++
QtCored4.dll!QObjectPrivate::deleteChildren() Line 1949 + 0x24 bytes C++
QtGuid4.dll!QWidget::~QWidget() Line 1602 C++
QtGuid4.dll!QMainWindow::~QMainWindow() Line 389 + 0x22 bytes C++
MyApplication.exe!MainWindow::~MainWindow() Line 77 + 0x66 bytes C++
MyApplication.exe!MainWindow::`scalar deleting destructor'() + 0xf bytes C++
MyApplication.exe!boost::checked_delete<MainWindow >(MainWindow * x) Line 34 + 0x21 bytes C++
MyApplication.exe!boost::detail::sp_counted_impl_p <MainWindow>::dispose() Line 78 + 0xc bytes C++
MyApplication.exe!boost::detail::sp_counted_base:: release() Line 103 C++
MyApplication.exe!boost::detail::shared_count::~sh ared_count() Line 221 C++
MyApplication.exe!boost::shared_ptr<MainWindow>::~ shared_ptr<MainWindow>() + 0x12 bytes C++
MyApplication.exe!boost::shared_ptr<MainWindow>::r eset() Line 387 C++
MyApplication.exe!main(int argc, char * * argv) Line 68 C++
MyApplication.exe!WinMain(HINSTANCE__ * instance, HINSTANCE__ * prevInstance, char * __formal, int cmdShow) Line 131 + 0x12 bytes C++
MyApplication.exe!__tmainCRTStartup() Line 547 + 0x2c bytes C
MyApplication.exe!WinMainCRTStartup() Line 371 C
kernel32.dll!@BaseThreadInitThunk@12() + 0x12 bytes
ntdll.dll!___RtlUserThreadStart@8() + 0x27 bytes
ntdll.dll!__RtlUserThreadStart@8() + 0x1b bytes@Anyone have an idea how to eliminate this ?