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

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

    XMLWordPrintable

Details

    • weak-vtables
    • 32b93e06f (dev), 3ed0de502 (6.5), be1b589cb (dev), afe466651 (6.6), 8d88f1282 (dev), e15dd3f16 (6.7)

    Description

      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 qtbase/lib/libQt6*.so | grep vtable | grep -v " U " | cut -c 18- | sort | uniq -c | grep -v " 1 " | sort -nr
           13 d vtable for Qt6::QQmlPrivate::QQmlElement<Qt6::QQuickItem>
            5 V vtable for Qt6::QBitmap
            3 V vtable for Qt6::QQuickImplicitSizeItemPrivate
            3 V vtable for Qt6::QQmlCustomParser
            3 V vtable for Qt6::QMutableTouchEvent
            3 V vtable for Qt6::QAbstractEventDispatcherPrivate
            3 d vtable for Qt6::QQmlStrongJSQObjectReference<Qt6::QQmlComponent>
            3 d vtable for Qt6::QQmlPrivate::QQmlElement<Qt6::QQuickText>
            3 d vtable for Qt6::QQmlPrivate::QQmlElement<Qt6::QQuickAbstractAnimation>
            3 d vtable for Qt6::QQmlGuard<Qt6::QQmlComponent>
            2 V vtable for Qt6::QtWayland::wl_touch
            2 V vtable for Qt6::QtWayland::wl_surface
            2 V vtable for Qt6::QtWayland::wl_subsurface
            2 V vtable for Qt6::QtWayland::wl_subcompositor
            2 V vtable for Qt6::QtWayland::wl_shm_pool
            2 V vtable for Qt6::QtWayland::wl_shm
            2 V vtable for Qt6::QtWayland::wl_shell_surface
            2 V vtable for Qt6::QtWayland::wl_shell
            2 V vtable for Qt6::QtWayland::wl_seat
            2 V vtable for Qt6::QtWayland::wl_registry
            2 V vtable for Qt6::QtWayland::wl_region
            2 V vtable for Qt6::QtWayland::wl_pointer
            2 V vtable for Qt6::QtWayland::wl_output
            2 V vtable for Qt6::QtWayland::wl_keyboard
            2 V vtable for Qt6::QtWayland::wl_data_source
            2 V vtable for Qt6::QtWayland::wl_data_offer
            2 V vtable for Qt6::QtWayland::wl_data_device_manager
            2 V vtable for Qt6::QtWayland::wl_data_device
            2 V vtable for Qt6::QtWayland::wl_compositor
            2 V vtable for Qt6::QtWayland::wl_callback
            2 V vtable for Qt6::QtWayland::wl_buffer
            2 V vtable for Qt6::QSSGRenderNode
            2 V vtable for Qt6::QQuickWindowQmlImplPrivate
            2 V vtable for Qt6::QQuickRenderControlPrivate
            2 V vtable for Qt6::QQuickPathPrivate
            2 V vtable for Qt6::QPointingDevicePrivate
            2 V vtable for Qt6::QPaintDeviceWindowPrivate
            2 V vtable for Qt6::QMutableSinglePointEvent
            2 V vtable for Qt6::QInputDevicePrivate
            2 V vtable for Qt6::qdesigner_internal::CECommand
            2 d vtable for webrtc::(anonymous namespace)::CreateSessionDescriptionMsg
            2 d vtable for VmaDefragmentationAlgorithm_Generic
            2 d vtable for VmaDefragmentationAlgorithm_Fast
            2 d vtable for VmaBlockMetadata_Linear
            2 d vtable for VmaBlockMetadata_Generic
            2 d vtable for VmaBlockMetadata_Buddy
            2 d vtable for VmaBlockMetadata
            2 d vtable for sh::(anonymous namespace)::Traverser
            2 d vtable for RenderDeviceDriverIface
            2 d vtable for quic::(anonymous namespace)::AlarmDelegate
            2 d vtable for Qt6::WebContentsAdapterOwner
            2 d vtable for Qt6::TextEditFindWidget
            2 d vtable for Qt6::QtColorButtonPrivate
            2 d vtable for Qt6::QtColorButton
            2 d vtable for Qt6::QtBoolEdit
            2 d vtable for Qt6::QQuickPropertyAnimationPrivate
            2 d vtable for Qt6::QQuickPaletteProviderPrivateBase<Qt6::QQuickPopup, Qt6::QQuickPopupPrivate>
            2 d vtable for Qt6::QQmlPrivate::QQmlElement<Qt6::QWindow>
            2 d vtable for Qt6::QQmlPrivate::QQmlElement<Qt6::QQuickWindowQmlImpl>
            2 d vtable for Qt6::QQmlPrivate::QQmlElement<Qt6::QQuickWindow>
            2 d vtable for Qt6::QQmlPrivate::QQmlElement<Qt6::QQuickTextInput>
            2 d vtable for Qt6::QQmlPrivate::QQmlElement<Qt6::QQuickTextEdit>
            2 d vtable for Qt6::QQmlPrivate::QQmlElement<Qt6::QQuickTableView>
            2 d vtable for Qt6::QQmlPrivate::QQmlElement<Qt6::QQuickSplitHandleAttached>
            2 d vtable for Qt6::QQmlPrivate::QQmlElement<Qt6::QQuickPopup>
            2 d vtable for Qt6::QQmlPrivate::QQmlElement<Qt6::QQuickPath>
            2 d vtable for Qt6::QQmlPrivate::QQmlElement<Qt6::QQuickPalette>
            2 d vtable for Qt6::QQmlPrivate::QQmlElement<Qt6::QQuickOverlay>
            2 d vtable for Qt6::QQmlPrivate::QQmlElement<Qt6::QQuickImageBase>
            2 d vtable for Qt6::QQmlPrivate::QQmlElement<Qt6::QQuickImage>
            2 d vtable for Qt6::QQmlPrivate::QQmlElement<Qt6::QQuickGradient>
            2 d vtable for Qt6::QQmlPrivate::QQmlElement<Qt6::QQuickFlickable>
            2 d vtable for Qt6::QQmlPrivate::QQmlElement<Qt6::QQuickFileNameFilter>
            2 d vtable for Qt6::QQmlPrivate::QQmlElement<Qt6::QQuickDialog>
            2 d vtable for Qt6::QQmlPrivate::QQmlElement<Qt6::QQuickControl>
            2 d vtable for Qt6::QQmlPrivate::QQmlElement<Qt6::QQuickContainer>
            2 d vtable for Qt6::QQmlPrivate::QQmlElement<Qt6::QQuickColorGroup>
            2 d vtable for Qt6::QQmlPrivate::QQmlElement<Qt6::QQuickAbstractButton>
            2 d vtable for Qt6::QQmlGuard<Qt6::QObject>
            2 d vtable for Qt6::QFbVtHandler
            2 d vtable for Qt6::QFbScreen
            2 d vtable for Qt6::QFbCursorDeviceListener
            2 d vtable for Qt6::QFbCursor
            2 d vtable for Qt6::QFbBackingStore
            2 d vtable for Qt6::QDesignerTaskMenuExtension
            2 d vtable for Qt6::ItemViewFindWidget
            2 d vtable for Qt6::AbstractFindWidget
            2 d vtable for pdfium::CFX_AggDeviceDriver
            2 d vtable for pdfium::base::PartitionRootGeneric
            2 d vtable for pdfium::base::PartitionRoot
            2 d vtable for pdfium::base::internal::PartitionRootBase
            2 d vtable for IPDF_Page
            2 d vtable for IJS_Runtime
            2 d vtable for IFX_WriteStream
            2 d vtable for IFX_SeekableWriteStream
            2 d vtable for IFX_SeekableStream
            2 d vtable for IFX_SeekableReadStream
            2 d vtable for icu_69::UVector
            2 d vtable for icu_69::UObject
            2 d vtable for icu_69::UnicodeStringAppendable
            2 d vtable for icu_69::UnicodeString
            2 d vtable for icu_69::UnicodeSet
            2 d vtable for icu_69::UnicodeMatcher
            2 d vtable for icu_69::UnicodeFunctor
            2 d vtable for icu_69::UnicodeFilter
            2 d vtable for icu_69::SymbolTable
            2 d vtable for icu_69::Replaceable
            2 d vtable for icu_69::Normalizer2WithImpl
            2 d vtable for icu_69::Normalizer2Impl
            2 d vtable for icu_69::Normalizer2
            2 d vtable for icu_69::NoopNormalizer2
            2 d vtable for icu_69::LoadedNormalizer2Impl
            2 d vtable for icu_69::FCDNormalizer2
            2 d vtable for icu_69::DecomposeNormalizer2
            2 d vtable for icu_69::ComposeNormalizer2
            2 d vtable for icu_69::CheckedArrayByteSink
            2 d vtable for icu_69::CharStringByteSink
            2 d vtable for icu_69::ByteSink
            2 d vtable for icu_69::BMPSet
            2 d vtable for icu_69::Appendable
            2 d vtable for fxcrt::Retainable
            2 d vtable for fxcrt::ObservedPtr<CPWL_Wnd::ProviderIface>
            2 d vtable for fxcrt::ObservedPtr<CPWL_Wnd>
            2 d vtable for fxcrt::ObservedPtr<CPWL_ScrollBar>
            2 d vtable for fxcrt::ObservedPtr<CPWL_MsgControl>
            2 d vtable for fxcrt::ObservedPtr<CPWL_Edit>
            2 d vtable for fxcrt::ObservedPtr<CPWL_ComboBox>
            2 d vtable for fxcrt::ObservedPtr<CPDF_Type3Cache>
            2 d vtable for fxcrt::ObservedPtr<CPDF_TransferFunc>
            2 d vtable for fxcrt::ObservedPtr<CPDFSDK_Widget>
            2 d vtable for fxcrt::ObservedPtr<CPDFSDK_PageView>
            2 d vtable for fxcrt::ObservedPtr<CPDFSDK_Annot>
            2 d vtable for fxcrt::ObservedPtr<CPDF_Pattern>
            2 d vtable for fxcrt::ObservedPtr<CPDF_Page::View>
            2 d vtable for fxcrt::ObservedPtr<CPDF_IccProfile>
            2 d vtable for fxcrt::ObservedPtr<CPDF_Font>
            2 d vtable for fxcrt::ObservedPtr<CPDF_ColorSpace>
            2 d vtable for fxcrt::ObservedPtr<CFX_Timer::HandlerIface>
            2 d vtable for fxcrt::ObservedPtr<CFX_GlyphCache>
            2 d vtable for fxcrt::ObservedPtr<CFX_FontMgr::FontDesc>
            2 d vtable for fxcrt::ObservedPtr<CFX_Face>
            2 d vtable for fxcrt::ObservedPtr<CFFL_TextField>
            2 d vtable for fxcrt::ObservedPtr<CFFL_RadioButton>
            2 d vtable for fxcrt::ObservedPtr<CFFL_ListBox>
            2 d vtable for fxcrt::ObservedPtr<CFFL_ComboBox>
            2 d vtable for fxcrt::ObservedPtr<CFFL_CheckBox>
            2 d vtable for fxcodec::ScanlineDecoder
            2 d vtable for fxcodec::(anonymous namespace)::RLScanlineDecoder
            2 d vtable for fxcodec::(anonymous namespace)::JpegDecoder
            2 d vtable for fxcodec::(anonymous namespace)::FlateScanlineDecoder
            2 d vtable for fxcodec::(anonymous namespace)::FlatePredictorScanlineDecoder
            2 d vtable for fxcodec::(anonymous namespace)::FaxDecoder
            2 d vtable for CPWL_Wnd::ProviderIface
            2 d vtable for CPWL_Wnd
            2 d vtable for CPWL_ScrollBar
            2 d vtable for CPWL_SBButton
            2 d vtable for CPWL_RadioButton
            2 d vtable for CPWL_PushButton
            2 d vtable for CPWL_ListCtrl::NotifyIface
            2 d vtable for CPWL_ListBox
            2 d vtable for CPWL_EditImpl::UndoReplaceSelection
            2 d vtable for CPWL_EditImpl::UndoInsertWord
            2 d vtable for CPWL_EditImpl::UndoInsertText
            2 d vtable for CPWL_EditImpl::UndoInsertReturn
            2 d vtable for CPWL_EditImpl::UndoDelete
            2 d vtable for CPWL_EditImpl::UndoClear
            2 d vtable for CPWL_EditImpl::UndoBackspace
            2 d vtable for CPWL_EditImpl::Provider
            2 d vtable for CPWL_Edit
            2 d vtable for CPWL_ComboBox
            2 d vtable for CPWL_CheckBox
            2 d vtable for CPWL_CBListBox
            2 d vtable for CPWL_CBButton
            2 d vtable for CPWL_Caret
            2 d vtable for CPWL_Button
            2 d vtable for CPVT_VariableText::Provider
            2 d vtable for CPVT_FontMap
            2 d vtable for CPDF_Type3Font
            2 d vtable for CPDF_Type3Cache
            2 d vtable for CPDF_Type1Font
            2 d vtable for CPDF_TrueTypeFont
            2 d vtable for CPDF_TransferFuncDIB
            2 d vtable for CPDF_TransferFunc
            2 d vtable for CPDF_TilingPattern
            2 d vtable for CPDF_TextState::TextData
            2 d vtable for CPDF_TextObject
            2 d vtable for CPDF_StructElement
            2 d vtable for CPDF_StringArchiveStream
            2 d vtable for CPDF_String
            2 d vtable for CPDF_StreamAcc
            2 d vtable for CPDF_Stream
            2 d vtable for CPDF_StitchFunc
            2 d vtable for CPDF_SimpleFont
            2 d vtable for CPDF_ShadingPattern
            2 d vtable for CPDF_ShadingObject
            2 d vtable for CPDF_SecurityHandler
            2 d vtable for CPDFSDK_WidgetHandler
            2 d vtable for CPDFSDK_Widget
            2 d vtable for CPDFSDK_PauseAdapter
            2 d vtable for CPDFSDK_InteractiveForm
            2 d vtable for CPDFSDK_FormFillEnvironment
            2 d vtable for CPDFSDK_FileWriteAdapter
            2 d vtable for CPDFSDK_CustomAccess
            2 d vtable for CPDFSDK_BAAnnotHandler
            2 d vtable for CPDFSDK_BAAnnot
            2 d vtable for CPDFSDK_Annot
            2 d vtable for CPDF_SampledFunc
            2 d vtable for CPDF_Reference
            2 d vtable for CPDF_ReadValidator
            2 d vtable for CPDF_PSFunc
            2 d vtable for CPDF_PatternCS
            2 d vtable for CPDF_Pattern
            2 d vtable for CPDF_PathObject
            2 d vtable for CPDF_Parser::ParsedObjectsHolder
            2 d vtable for CPDF_PageRenderContext
            2 d vtable for CPDF_PageRenderCache
            2 d vtable for CPDF_PageObjectHolder
            2 d vtable for CPDF_PageObjectAvail
            2 d vtable for CPDF_PageObject
            2 d vtable for CPDF_Page
            2 d vtable for CPDF_OCContext
            2 d vtable for CPDF_ObjectWalker::SubobjectIterator
            2 d vtable for CPDF_ObjectAvail
            2 d vtable for CPDF_Object
            2 d vtable for CPDF_Number
            2 d vtable for CPDF_Null
            2 d vtable for CPDF_Name
            2 d vtable for CPDF_LinkList
            2 d vtable for CPDF_IndirectObjectHolder
            2 d vtable for CPDF_ImageObject
            2 d vtable for CPDF_Image
            2 d vtable for CPDF_IccProfile
            2 d vtable for CPDF_HintTables
            2 d vtable for CPDF_GraphicStates
            2 d vtable for CPDF_GeneralState::StateData
            2 d vtable for CPDF_Function
            2 d vtable for CPDF_FormObject
            2 d vtable for CPDF_Form
            2 d vtable for CPDF_Font
            2 d vtable for CPDF_ExpIntFunc
            2 d vtable for CPDF_Document::RenderDataIface
            2 d vtable for CPDF_Document::PageDataIface
            2 d vtable for CPDF_Document
            2 d vtable for CPDF_DocRenderData
            2 d vtable for CPDF_DocPageData
            2 d vtable for CPDF_Dictionary
            2 d vtable for CPDF_DIB
            2 d vtable for CPDF_DeviceCS
            2 d vtable for CPDF_DataAvail::FileAvail
            2 d vtable for CPDF_DataAvail::DownloadHints
            2 d vtable for CPDF_DataAvail
            2 d vtable for CPDF_ContentMarks::MarkData
            2 d vtable for CPDF_ContentMarkItem
            2 d vtable for CPDF_ColorState::ColorData
            2 d vtable for CPDF_ColorSpace
            2 d vtable for CPDF_CMap
            2 d vtable for CPDF_ClipPath::PathData
            2 d vtable for CPDF_CIDFont
            2 d vtable for CPDF_Boolean
            2 d vtable for CPDF_BAFontMap
            2 d vtable for CPDF_Array
            2 d vtable for CPDF_AnnotList
            2 d vtable for CPDF_AllStates
            2 d vtable for content::(anonymous namespace)::ResourceUsageReporterImpl
            2 d vtable for content::(anonymous namespace)::MojoBlobReaderDelegate
            2 d vtable for CLinuxPlatform
            2 d vtable for CJS_RuntimeStub
            2 d vtable for CJS_EventContextStub
            2 d vtable for CFX_XMLText
            2 d vtable for CFX_XMLNode
            2 d vtable for CFX_XMLInstruction
            2 d vtable for CFX_XMLElement
            2 d vtable for CFX_XMLCharData
            2 d vtable for CFX_WideTextBuf
            2 d vtable for CFX_UnicodeEncoding
            2 d vtable for CFX_Timer::HandlerIface
            2 d vtable for CFX_SeekableStreamProxy
            2 d vtable for CFX_RetainablePath
            2 d vtable for CFX_RetainableGraphStateData
            2 d vtable for CFX_RenderDevice
            2 d vtable for CFX_ReadOnlyMemoryStream
            2 d vtable for CFX_GlyphCache
            2 d vtable for CFX_FontMgr::FontDesc
            2 d vtable for CFX_FolderFontInfo
            2 d vtable for CFX_FileAccess_Posix
            2 d vtable for CFX_Face
            2 d vtable for CFX_ExternalFontInfo
            2 d vtable for CFX_DIBitmap
            2 d vtable for CFX_DIBBase
            2 d vtable for CFX_DefaultRenderDevice
            2 d vtable for CFX_CTTGSUBTable::TSubTableBase
            2 d vtable for CFX_CTTGSUBTable::TSubTable2
            2 d vtable for CFX_CTTGSUBTable::TSubTable1
            2 d vtable for CFX_CTTGSUBTable::TCoverageFormat2
            2 d vtable for CFX_CTTGSUBTable::TCoverageFormat1
            2 d vtable for CFX_CodecMemory
            2 d vtable for CFX_BitmapStorer
            2 d vtable for CFX_BitmapComposer
            2 d vtable for CFX_BinaryBuf
            2 d vtable for CFFL_TextObject
            2 d vtable for CFFL_TextField
            2 d vtable for CFFL_RadioButton
            2 d vtable for CFFL_PushButton
            2 d vtable for CFFL_PrivateData
            2 d vtable for CFFL_ListBox
            2 d vtable for CFFL_InteractiveFormFiller
            2 d vtable for CFFL_FormField
            2 d vtable for CFFL_ComboBox
            2 d vtable for CFFL_CheckBox
            2 d vtable for CFFL_Button
            2 d vtable for CFDF_Document
            2 d vtable for blink::(anonymous namespace)::AlwaysInvalidateChecker
            2 d vtable for base::(anonymous namespace)::PostTaskAndReplyWithTraitsTaskRunner
            2 d vtable for (anonymous namespace)::StreamIterator
            2 d vtable for (anonymous namespace)::Sk4pxXfermode<(anonymous namespace)::Xor>
            2 d vtable for (anonymous namespace)::Sk4pxXfermode<(anonymous namespace)::SrcOver>
            2 d vtable for (anonymous namespace)::Sk4pxXfermode<(anonymous namespace)::SrcOut>
            2 d vtable for (anonymous namespace)::Sk4pxXfermode<(anonymous namespace)::SrcIn>
            2 d vtable for (anonymous namespace)::Sk4pxXfermode<(anonymous namespace)::SrcATop>
            2 d vtable for (anonymous namespace)::Sk4pxXfermode<(anonymous namespace)::Src>
            2 d vtable for (anonymous namespace)::Sk4pxXfermode<(anonymous namespace)::Screen>
            2 d vtable for (anonymous namespace)::Sk4pxXfermode<(anonymous namespace)::Plus>
            2 d vtable for (anonymous namespace)::Sk4pxXfermode<(anonymous namespace)::Modulate>
            2 d vtable for (anonymous namespace)::Sk4pxXfermode<(anonymous namespace)::DstOver>
            2 d vtable for (anonymous namespace)::Sk4pxXfermode<(anonymous namespace)::DstOut>
            2 d vtable for (anonymous namespace)::Sk4pxXfermode<(anonymous namespace)::DstIn>
            2 d vtable for (anonymous namespace)::Sk4pxXfermode<(anonymous namespace)::DstATop>
            2 d vtable for (anonymous namespace)::Sk4pxXfermode<(anonymous namespace)::Dst>
            2 d vtable for (anonymous namespace)::Sk4pxXfermode<(anonymous namespace)::Clear>
            2 d vtable for (anonymous namespace)::ReadableSubStream
            2 d vtable for (anonymous namespace)::ObjectsHolderStub
            2 d vtable for (anonymous namespace)::FPDF_FileAvailContext
            2 d vtable for (anonymous namespace)::FPDF_FileAccessContext
            2 d vtable for (anonymous namespace)::FPDF_DownloadHintsContext
            2 d vtable for (anonymous namespace)::DictionaryIterator
            2 d vtable for (anonymous namespace)::CPDF_SeparationCS
            2 d vtable for (anonymous namespace)::CPDF_LabCS
            2 d vtable for (anonymous namespace)::CPDF_IndexedCS
            2 d vtable for (anonymous namespace)::CPDF_ICCBasedCS
            2 d vtable for (anonymous namespace)::CPDF_DeviceNCS
            2 d vtable for (anonymous namespace)::CPDF_CalRGB
            2 d vtable for (anonymous namespace)::CPDF_CalGray
            2 d vtable for (anonymous namespace)::CFX_LinuxFontInfo
            2 d vtable for (anonymous namespace)::CFX_FileBufferArchive
            2 d vtable for (anonymous namespace)::CFX_CRTFileStream
            2 d vtable for (anonymous namespace)::AutoClosedQCommand
            2 d vtable for (anonymous namespace)::AutoClosedCommand
            2 d vtable for (anonymous namespace)::ArrayIterator
            2 d construction vtable for IFX_SeekableWriteStream-in-IFX_SeekableStream
            2 d construction vtable for IFX_SeekableReadStream-in-IFX_SeekableStream
            2 d construction vtable for IFX_SeekableReadStream-in-CPDFSDK_CustomAccess
            2 d construction vtable for IFX_SeekableReadStream-in-CPDF_ReadValidator
            2 d construction vtable for IFX_SeekableReadStream-in-CFX_ReadOnlyMemoryStream
            2 d construction vtable for IFX_RetainableWriteStream-in-IFX_SeekableWriteStream
            2 d construction vtable for IFX_RetainableWriteStream-in-IFX_SeekableStream
            2 d construction vtable for IFX_RetainableWriteStream-in-CPDFSDK_FileWriteAdapter
      

      Attachments

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

        Activity

          People

            mmutz Marc Mutz
            mmutz Marc Mutz
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated:

              Gerrit Reviews

                There are 4 open Gerrit changes