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

Redocking dock widget into dock area may crash

    XMLWordPrintable

Details

    • Bug
    • Resolution: Unresolved
    • P1: Critical
    • None
    • 5.12.12
    • Widgets: Main Window
    • None
    • Windows

    Description

      In Krita, when I have a certain dock layout and I move a dock widget to a different dock area, I sometimes get a crash (https://bugs.kde.org/show_bug.cgi?id=449779). Here is the relevant backtrace:

      
      Thread 1 received signal SIGSEGV, Segmentation fault.
      QDockAreaLayoutInfo::separatorRect (this=0x0, path=...) at D:\dev\krita\src-master-build\b_deps\ext_qt\s\qtbase\src\widgets\widgets\qdockarealayout.cpp:1389
      1389        return separatorRect(index);
      (gdb) bt
      #0  QDockAreaLayoutInfo::separatorRect (this=0x0, path=...) at D:\dev\krita\src-master-build\b_deps\ext_qt\s\qtbase\src\widgets\widgets\qdockarealayout.cpp:1389
      #1  0x00007ffe2df7e121 in QDockAreaLayoutInfo::separatorRect (this=<optimized out>, path=...) at D:\dev\krita\src-master-build\b_deps\ext_qt\s\qtbase\src\widgets\widgets\qdockarealayout.cpp:1387
      #2  0x00007ffe2df7e19d in QDockAreaLayout::separatorRect (this=this@entry=0x11af5b60, path=...) at D:\dev\krita\src-master-build\b_deps\ext_qt\s\qtbase\src\widgets\widgets\qdockarealayout.cpp:2586
      #3  0x00007ffe2e1b48de in QMainWindowLayoutSeparatorHelper<QMainWindowLayout>::adjustCursor (this=this@entry=0x11af5a40, pos=...)
          at D:/dev/krita/src-master-build/b_deps/ext_qt/s/qtbase/src/widgets/widgets/qmainwindowlayout_p.h:168
      #4  0x00007ffe2e1b410f in QMainWindowLayoutSeparatorHelper<QMainWindowLayout>::windowEvent (this=0x11af5a40, event=event@entry=0x5fb6a0)
          at D:/dev/krita/src-master-build/b_deps/ext_qt/s/qtbase/src/widgets/widgets/qmainwindowlayout_p.h:209
      #5  0x00007ffe2dfa54a6 in QMainWindow::event (this=this@entry=0x10723c50, event=event@entry=0x5fb6a0) at D:\dev\krita\src-master-build\b_deps\ext_qt\s\qtbase\src\widgets\widgets\qmainwindow.cpp:1304
      #6  0x00007ffe6b7e534c in KMainWindow::event (this=0x10723c50, ev=0x5fb6a0) at D:\dev\krita\src-master\libs\widgetutils\xmlgui\kmainwindow.cpp:765
      #7  0x00007ffe2de77bec in QApplicationPrivate::notify_helper (this=this@entry=0x2630390, receiver=receiver@entry=0x10723c50, e=e@entry=0x5fb6a0)
          at D:\dev\krita\src-master-build\b_deps\ext_qt\s\qtbase\src\widgets\kernel\qapplication.cpp:3650
      #8  0x00007ffe2de80477 in QApplication::notify (this=this@entry=0x5ffb80, receiver=receiver@entry=0x194025f0, e=e@entry=0x5fba40) at D:\dev\krita\src-master-build\b_deps\ext_qt\s\qtbase\src\widgets\kernel\qapplication.cpp:3135
      

      What happens is item.subinfo being null in QDockAreaLayoutInfo::separatorRect https://code.qt.io/cgit/qt/qtbase.git/tree/src/widgets/widgets/qdockarealayout.cpp?h=v5.12.12#n1386 . The event that triggers this code path is a MouseHover event.

      I suspect this is due to the redocking animation happening, and that item.subinfo is only being set after the animation is finished in https://code.qt.io/cgit/qt/qtbase.git/tree/src/widgets/widgets/qmainwindowlayout.cpp?h=v5.12.12#n2209 . QDockAreaLayoutInfo::separatorRect did not account for this and assumes that item.subinfo is always valid, but it's not.

      Attachments

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

        Activity

          People

            qt.team.quick.subscriptions Qt Quick and Widgets Team
            alvinhochun Alvin Wong
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:

              Gerrit Reviews

                There are no open Gerrit changes