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

Mac: Resource Leak in Mac Style / Scroller

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Closed
    • Priority: P2: Important
    • Resolution: Done
    • Affects Version/s: 5.9.0 Beta 1
    • Fix Version/s: 5.9.0 Beta 3
    • Component/s: QPA
    • Labels:
      None
    • Environment:
      macOS 10.11
    • Platform/s:
      macOS
    • Commits:
      b1131074199aae97b2a005cba871f6baf2a32c63

      Description

      macOS instruments records quite a lot of leaks with a backtrace like this:

         0 libsystem_malloc.dylib malloc_zone_calloc
         1 libsystem_malloc.dylib calloc
         2 libobjc.A.dylib class_createInstance
         3 libobjc.A.dylib +[NSObject allocWithZone:]
         4 libobjc.A.dylib +[NSObject new]
         5 AppKit -[NSControl _commonEarlyInit]
         6 AppKit -[NSControl initWithFrame:]
         7 AppKit -[NSScroller initWithFrame:]
         8 QtWidgets QMacStyle::drawComplexControl(QStyle::ComplexControl, QStyleOptionComplex const*, QPainter*, QWidget const*) const
         9 QtWidgets QScrollBar::paintEvent(QPaintEvent*)
        10 QtWidgets QWidget::event(QEvent*)
        11 QtWidgets QScrollBar::event(QEvent*)
        12 QtWidgets QApplicationPrivate::notify_helper(QObject*, QEvent*)
        13 QtWidgets QApplication::notify(QObject*, QEvent*)
        14 QtCore QCoreApplication::notifyInternal2(QObject*, QEvent*)
        15 QtWidgets QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*)
        16 QtWidgets QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*)
        17 QtWidgets QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*)
        18 QtWidgets QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*)
        19 QtWidgets QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*)
        20 QtWidgets QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*)
        21 QtWidgets QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*)
        22 QtWidgets QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*)
        23 QtWidgets QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*)
        24 QtWidgets QWidgetBackingStore::doSync()
        25 QtWidgets QWidget::event(QEvent*)
        26 QtWidgets QApplicationPrivate::notify_helper(QObject*, QEvent*)
        27 QtWidgets QApplication::notify(QObject*, QEvent*)
        28 QtCore QCoreApplication::notifyInternal2(QObject*, QEvent*)
        29 QtCore QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*)
        30 libqcocoa.dylib QCocoaEventDispatcherPrivate::processPostedEvents()
        31 libqcocoa.dylib QCocoaEventDispatcherPrivate::postedEventsSourceCallback(void*)
        32 CoreFoundation __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__
        33 CoreFoundation __CFRunLoopDoSources0
        34 CoreFoundation __CFRunLoopRun
      

      I'm not sure if this code is qmacstyle_mac.mm is actually correct:

                      [NSGraphicsContext setCurrentContext:[NSGraphicsContext
                           graphicsContextWithGraphicsPort:(CGContextRef)cg flipped:NO]];
                      NSScroller *scroller = reinterpret_cast<NSScroller*>(d->nsscroller);
                      [scroller initWithFrame:NSMakeRect(0, 0, slider->rect.width(), slider->rect.height())];
      

      if d->nsscroller is some kind of cache, shouldn't it be released before calling initWithFrame? Does that caching make any sense at all?

        Attachments

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

          Activity

            People

            Assignee:
            qt.team.graphics.and.multimedia Qt Graphics Team
            Reporter:
            njeisecke Nils Jeisecke
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Dates

              Created:
              Updated:
              Resolved:

                Gerrit Reviews

                There are no open Gerrit changes