2011-03-12 4 views
1

백그라운드에서 데이터를 업데이트하는 몇 가지 스레드와 상당히 유사한 QML/C++ 하이브리드 응용 프로그램이 있습니다. 모든 것은 내가 응용 프로그램을 종료 후 다시 채우고, 특정 ListView를 볼 수 있도록하는 경우를 제외하고 완벽하게 작동, 다음 위치에서 어설 션 오류와 디버거 나누기 :QT 종료시 QML/C++ 응용 프로그램이 다운 됨

> 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<QDeclarativePropertyAnimation>::~QDeclarativeElement<QDeclarativePropertyAnimation>() Line 90 + 0xf bytes C++ 
    QtDeclaratived4.dll!QDeclarativePrivate::QDeclarativeElement<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::~QDeclarativeTransition() Line 168 + 0x9 bytes C++ 
    QtDeclaratived4.dll!QDeclarativePrivate::QDeclarativeElement<QDeclarativeTransition>::~QDeclarativeElement<QDeclarativeTransition>() Line 90 + 0xf bytes C++ 
    QtDeclaratived4.dll!QDeclarativePrivate::QDeclarativeElement<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::~QDeclarativeItem() Line 1504 + 0x1f bytes C++ 
    QtDeclaratived4.dll!QDeclarativeRectangle::~QDeclarativeRectangle() + 0xf bytes C++ 
    QtDeclaratived4.dll!QDeclarativePrivate::QDeclarativeElement<QDeclarativeRectangle>::~QDeclarativeElement<QDeclarativeRectangle>() Line 90 + 0xf bytes C++ 
    QtDeclaratived4.dll!QDeclarativePrivate::QDeclarativeElement<QDeclarativeRectangle>::`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<QObjectData>::cleanup(QObjectData * pointer) Line 62 + 0x20 bytes C++ 
    QtCored4.dll!QScopedPointer<QObjectData,QScopedPointerDeleter<QObjectData> >::~QScopedPointer<QObjectData,QScopedPointerDeleter<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::~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<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::~shared_count() Line 221 C++ 
    MyApplication.exe!boost::shared_ptr<MainWindow>::~shared_ptr<MainWindow>() + 0x12 bytes C++ 
    MyApplication.exe!boost::shared_ptr<MainWindow>::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 
    [email protected]@12() + 0x12 bytes  
    [email protected]() + 0x27 bytes 
    [email protected]() + 0x1b bytes  
: 여기

QDeclarativeAbstractBinding::~QDeclarativeAbstractBinding() 
{ 
    Q_ASSERT(m_prevBinding == 0); //<---- THIS GUY IS THE OFFENDING LINE 
    Q_ASSERT(m_mePtr == 0); 
} 

및 스택 추적입니다

편집 :

는 질문 : 는이 문제를 어떻게 제거 할 수 있습니까? 내 코드에 어떤 문제가있을 수 있습니까? 이것이 일어날 수있는 방법에 관한 정보는 없습니다.

+0

나는 당신이 여기서 무엇을 묻고 있는지 잘 모르겠습니다. 어설 션이 실패하면, 그 시점에서'm_prevBinding! = 0'을 의미합니다. 귀하의 질문에 문맥이 없기 때문에, 나는 당신이 조언을 구하는 것을 실제로 보지 못합니다. – Mat

답변

1

응용 프로그램 코드를 보지 않고도 어떤 일이 벌어지고 있는지 알기가 어렵습니다. 또한이 충돌을 재현하는 독립 실행 형 예제를 만들 수 있다면 https://bugreports.qt.io에 버그를 제출하는 것이 좋습니다.

1

늦게 응답하여 죄송합니다. QML 파일을 검사하여 하나의 "State"요소에서 같은 대상을 가진 여러 "PropertyChange"요소를 정의 할 때 버그가 발견되었습니다. 같은 항목에 대한 모든 속성 변경을 단일 "PropertyChange"요소로 그룹화하고 문제가 사라졌습니다. 그러나 그것은 매우 이상하고 주장 실패는 결정적이지 않습니다. 또한이 정보로 버그를 재현하려고 시도했지만 성공하지 못했습니다. 아마 내가 놓친 다른 요소가있을 것입니다. 어쨌든 고마워.

관련 문제