El dijous, 15 d’octubre de 2020, a les 16:22:59 CEST, Milian Wolff va escriure: > Hey all, > > I'm finally taking a bit of time to look after KDevelop again. I would most > notably like to make it ASAN/UBSAN clean. One thing I'm stumbling over are > the > following reports: > > ``` > /usr/include/KF5/KCoreAddons/kpluginfactory.h:545:24: runtime error: member > call on address 0x6030000f2d40 which does not point to an object of type > 'KPluginFactory' > 0x6030000f2d40: note: object has invalid vptr > 33 00 80 0f e0 31 d4 c3 5d 7f 00 00 a0 41 04 00 80 60 00 00 70 2d 0f 00 > 30 > 60 00 00 00 00 00 00 > ^~~~~~~~~~~~~~~~~~~~~~~ > invalid vptr > #0 0x7f5dede47d8c in KDevelop::IPlugin* > KPluginFactory::create<KDevelop::IPlugin>(QObject*, QList<QVariant> const&) / > usr/include/KF5/KCoreAddons/kpluginfactory.h:545 > #1 0x7f5dede47d8c in > KDevelop::PluginController::loadPluginInternal(QString const&) /home/milian/ > projects/kf5/src/extragear/kdevelop/kdevelop/kdevplatform/shell/ > plugincontroller.cpp:615 > ``` > > Or this one: > > ``` > /usr/include/qt/QtCore/qobject.h:524:12: runtime error: downcast of address > 0x6060002922e0 which does not point to an object of type 'IPlugin' > 0x6060002922e0: note: object has invalid vptr > 36 00 80 24 b0 2f d4 c3 5d 7f 00 00 a0 42 04 00 80 60 00 00 b0 30 d4 c3 > 5d > 7f 00 00 80 fe 06 00 > ^~~~~~~~~~~~~~~~~~~~~~~ > invalid vptr > #0 0x7f5dede47f20 in KDevelop::IPlugin* > qobject_cast<KDevelop::IPlugin*>(QObject*) /usr/include/qt/QtCore/qobject.h: > 524 > #1 0x7f5dede47f20 in KDevelop::IPlugin* > KPluginFactory::create<KDevelop::IPlugin>(QObject*, QList<QVariant> const&) / > usr/include/KF5/KCoreAddons/kpluginfactory.h:547 > ``` > > I have the feeling that this might be a limitation of UBSAN? Or is this an > actual problem - does anyone know? > > Most notably, the kplugin* tests in kcoreaddons are UBSAN clean for me, which > is quite odd. I would expect them to raise similar warnings, but apparently > they don't. Or potentially it's simply that KDevelop plugins are way more > complex - we apparently are using multiple inheritance there for example: > > ``` > class IPlugin : public QObject, public KXMLGUIClient > class AStylePlugin : public KDevelop::IPlugin, public > KDevelop::ISourceFormatter > ``` > > Maybe that's the problem? Does anyone know?
I don't get any of those warnings (on starting kdevelop). What's your compile flags? I used cmake -DCMAKE_BUILD_TYPE=Debug -DECM_ENABLE_SANITIZERS='address;undefined' with gcc 10.2 About that warning i've seen it once and it was because the object i was casting was still not totally created yet and thus wasn't of the target type at that point. Cheers, Albert