Crash in void QWidgetBackingStore::sync()



  • Good morning!

    I am developing an application with the Qt library and everything seems to work well.
    I am testing it and I leaved the application running all the night several times.
    But two times I had the same crash of access violation with the same situation on the stack.
    It seems something related to the Qt library, when there is the synchronisation of the backing store, when the dirty widgets need to be repainted and flushed.
    It happens that the dirtyWidgets vector of widget pointers seems to have two pointers and the second one has the oxcdcdcdcd value (I am in debug mode and I am using Visual Studio 2008 prof edition: Qt version 4.7.3).

    This is the part of the stack when the crash occurs:
    QtGuid4.dll!QWidgetBackingStore::sync() Riga 1199 QtGuid4.dll!QWidgetPrivate::syncBackingStore() Riga 1845

    And this is the code of the Qt file where the crash is happening:

    // File qbackingstore.cpp
    @
    void QWidgetBackingStore::sync()
    {
    // ......other code
    // Loop through all update() widgets and remove them from the //list before they are
    // painted (in case someone calls update() in paintEvent). If the //widget is opaque
    // and does not have transparent overlapping siblings, append it to the
    // opaqueNonOverlappedWidgets list and paint it directly without //composition.

    QVarLengthArray<QWidget *, 32> opaqueNonOverlappedWidgets;
    for (int i = 0; i < dirtyWidgets.size(); ++i) {
        QWidget *w = dirtyWidgets.at(i);
        QWidgetPrivate *wd = w->d_func(); // <- crash!!!
        if (wd->data.in_destructor)
            continue;
    

    // ......other code
    }
    @
    These are the variables situation:

    @
    dirtyWidgets [2](0x07e403d0 {dimFontVal=14 startBarX=450 startBarY=42 ...},0xcdcdcdcd {data=??? }) QVector<QWidget *>

    • [0] 0x07e403d0 {dimFontVal=14 startBarX=450 startBarY=42 ...} QWidget *
    • [1] 0xcdcdcdcd {data=??? } QWidget *
    • this 0x04b28e78 {tlw=0x07e403d0 dirtyOnScreen={...} dirty={...} ...} QWidgetBackingStore * const
    • w 0xcdcdcdcd {data=??? } QWidget *
      @

    Can I have some of your precious help?

    Tahnk you

    [edit: please use @ code tags when using code in your posts, Eddy]

    Maurus


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.