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

Duplicated vtables due to inline virtual functions (probably all dtors)




      Duplicated vtables can break RTTI (dynamic_cast False Negatives). If they occur on exception classes, they can break catch clauses, too.

      Volker Krause reported the following list of duplicated vtables in Qt. There are False Positives, and there are likely more that don't happen to be used in two different Qt libraries, yet, but we should fix what we can fix.

      $ nm -C lib/libQt5*.so.5.4.1 | grep vtable | grep -v " U " | cut -c 18- | sort | uniq -c | grep -v " 1 "
            2 d construction vtable for QPatternist::SchemaComponent-in-QPatternist::XsdComplexType
            2 d construction vtable for QPatternist::SchemaComponent-in-QPatternist::XsdSimpleType
            2 d construction vtable for QPatternist::SchemaComponent-in-QPatternist::XsdUserSchemaType<QPatternist::AnySimpleType>
            2 d construction vtable for QPatternist::SchemaComponent-in-QPatternist::XsdUserSchemaType<QPatternist::AnyType>
            2 d vtable for AbstractFindWidget
            2 d vtable for (anonymous namespace)::DrawTextItemDevice
            2 d vtable for (anonymous namespace)::DrawTextItemRecorder
            2 d vtable for (anonymous namespace)::QOpenGLStaticTextUserData
            2 d vtable for ItemViewFindWidget
            2 d vtable for ModelNodeMetaObject
            2 d vtable for ModelObject
            2 d vtable for ParallelAnimationWrapper
            2 d vtable for QAbstractAnimationAction
            2 d vtable for QAbstractExtensionFactory
            2 d vtable for QAbstractTextDocumentLayoutPrivate
            2 d vtable for QActionAnimation
            2 d vtable for QDesignerTaskMenuExtension
            2 d vtable for QFontEngineGlyphCache
            2 d vtable for QFramePrivate
            2 d vtable for QGraphicsTransformPrivate
            2 d vtable for QQuickItemChangeListener
            4 d vtable for QRunnable
            2 d vtable for QSmoothedAnimation
            2 d vtable for QStaticTextUserData
            2 d vtable for QtBoolEdit
            2 d vtable for QtColorButton
            2 d vtable for TextEditFindWidget
            2 d vtable for WorkerDataEvent
            2 d vtable for WorkerErrorEvent
            2 d vtable for WorkerLoadEvent
            2 d vtable for WorkerRemoveEvent
            2 d vtable for WTF::FilePrintStream
            2 d vtable for WTF::PrintStream
            2 V vtable for QAbstractDynamicMetaObject
            5 V vtable for QAbstractItemModelPrivate
            3 V vtable for QAccessibleStateChangeEvent
            2 V vtable for QAccessibleTextCursorEvent
            2 V vtable for QAccessibleTextUpdateEvent
            2 V vtable for QAccessibleValueChangeEvent
            2 V vtable for QAccessibleValueInterface
            2 V vtable for qdesigner_internal::CECommand
            2 V vtable for QDynamicMetaObjectData
            2 V vtable for QEventTransitionPrivate
            2 V vtable for QFactoryInterface
            2 V vtable for QGraphicsEffectPrivate
            2 V vtable for QGraphicsViewPrivate
            2 V vtable for QInputMethodEvent
            2 V vtable for QOpenGLPaintDevicePrivate
            2 V vtable for QPagedPaintDevicePrivate
            3 V vtable for QPaintEnginePrivate
            2 V vtable for QQmlCustomParser
            2 V vtable for QQmlRefCount
            2 V vtable for QSGRenderNode
            2 V vtable for QTextObjectInterface
            2 V vtable for QTextureGlyphCache
            3 V vtable for QV8Engine::Deletable


        For Gerrit Dashboard: QTBUG-45582
        # Subject Branch Project Status CR V



            mmutz Marc Mutz
            mmutz Marc Mutz
            0 Vote for this issue
            3 Start watching this issue