Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-9112

QPixmaps try to access FBS connection after the connection has been closed by QApplication (demonstrated with QtWebKit)

    XMLWordPrintable

Details

    • Bug
    • Resolution: Done
    • P2: Important
    • 4.7.1
    • 4.6.2
    • None
    • None
    • f4bada8cbba5f209556ad4e3703d412e4146a0af

    Description

      During QApplication destruction it is possible that FbsBitmap objects are tried to be freed when the font and bitmap server connection has already been closed down. QTimer::singleShot(0, this, SLOT(initialize())); in the test application seems to trigger the crash in destruction phase with more ease. It is not a good way to construct the QT application but seems to be still used in some code code snippet that shows the cleanup order from QApplication.

      QApplication::~QApplication()
      ...
      qt_cleanup();  <-- this closes the FBS connection ...
      qUnregisterGuiVariant(); <-- triggers the child object deletion, where 
      

      QtWebkit's cache deletes QPixmaps Steps to reproduce:

      1) compile the attached sample application
      2) start crash_test application
      3) press end call key to close applications (the sweet spot seems to be when ACID3 test has been executed a bit over 50%)

      Call stack from the panic and test application as attachments. I assume that FBS connection should be closed only after all QObjects are deleted since those could be using QPixmaps that are still trying to access the FBS.

      Attachments

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            jhautaka Jani Hautakangas
            janne koponen Janne Koponen (Inactive)
            Votes:
            1 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes