title: QT QML/C++ application crash on exit
body: <p>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:</p>
  
  <pre><code>QDeclarativeAbstractBinding::~QDeclarativeAbstractBinding()
  {
      Q_ASSERT(m_prevBinding == 0); //&lt;---- THIS GUY IS THE OFFENDING LINE
      Q_ASSERT(m_mePtr == 0); 
  }   
  </code></pre>
  
  <p>and here is the stack trace:</p>
  
  <pre><code>&gt;   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!QDeclarativeCompiledBindingsPrivate::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!QDeclarativeCompiledBindingsPrivate::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!QDeclarativeCompiledBindingsPrivate::Binding::destroy()  Line 328   C++
      QtDeclaratived4.dll!QDeclarativeData::destroyed(QObject * object)  Line 1000    C++
      QtDeclaratived4.dll!QDeclarativeData::destroyed(QAbstractDeclarativeData * 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::QDeclarativeElement&lt;QDeclarativePropertyAnimation&gt;::~QDeclarativeElement&lt;QDeclarativePropertyAnimation&gt;()  Line 90 + 0xf bytes C++
      QtDeclaratived4.dll!QDeclarativePrivate::QDeclarativeElement&lt;QDeclarativePropertyAnimation&gt;::`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::~QDeclarativeTransition()  Line 168 + 0x9 bytes C++
      QtDeclaratived4.dll!QDeclarativePrivate::QDeclarativeElement&lt;QDeclarativeTransition&gt;::~QDeclarativeElement&lt;QDeclarativeTransition&gt;()  Line 90 + 0xf bytes   C++
      QtDeclaratived4.dll!QDeclarativePrivate::QDeclarativeElement&lt;QDeclarativeTransition&gt;::`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::~QDeclarativeItem()  Line 1504 + 0x1f bytes   C++
      QtDeclaratived4.dll!QDeclarativeRectangle::~QDeclarativeRectangle()  + 0xf bytes    C++
      QtDeclaratived4.dll!QDeclarativePrivate::QDeclarativeElement&lt;QDeclarativeRectangle&gt;::~QDeclarativeElement&lt;QDeclarativeRectangle&gt;()  Line 90 + 0xf bytes C++
      QtDeclaratived4.dll!QDeclarativePrivate::QDeclarativeElement&lt;QDeclarativeRectangle&gt;::`scalar deleting destructor'()  + 0xf bytes    C++
      QtDeclaratived4.dll!QDeclarativeViewPrivate::~QDeclarativeViewPrivate()  Line 135 + 0x67 bytes  C++
      QtDeclaratived4.dll!QDeclarativeViewPrivate::`scalar deleting destructor'()  + 0xf bytes    C++
      QtCored4.dll!QScopedPointerDeleter&lt;QObjectData&gt;::cleanup(QObjectData * pointer)  Line 62 + 0x20 bytes   C++
      QtCored4.dll!QScopedPointer&lt;QObjectData,QScopedPointerDeleter&lt;QObjectData&gt; &gt;::~QScopedPointer&lt;QObjectData,QScopedPointerDeleter&lt;QObjectData&gt; &gt;()  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::~QAbstractScrollArea()  Line 526 + 0xf bytes   C++
      QtGuid4.dll!QGraphicsView::~QGraphicsView()  Line 1165 + 0xf bytes  C++
      QtDeclaratived4.dll!QDeclarativeView::~QDeclarativeView()  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&lt;MainWindow&gt;(MainWindow * x)  Line 34 + 0x21 bytes   C++
      MyApplication.exe!boost::detail::sp_counted_impl_p&lt;MainWindow&gt;::dispose()  Line 78 + 0xc bytes  C++
      MyApplication.exe!boost::detail::sp_counted_base::release()  Line 103   C++
      MyApplication.exe!boost::detail::shared_count::~shared_count()  Line 221    C++
      MyApplication.exe!boost::shared_ptr&lt;MainWindow&gt;::~shared_ptr&lt;MainWindow&gt;()  + 0x12 bytes    C++
      MyApplication.exe!boost::shared_ptr&lt;MainWindow&gt;::reset()  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    
  </code></pre>
  
  <p>Edit:</p>
  
  <p>The question:
  How can I eliminate this problem ? What might be wrong with my code ? There is no information regarding how this can happen.</p>