https://bugs.kde.org/show_bug.cgi?id=413003

--- Comment #3 from Matt Fagnani <matthew.fagn...@utoronto.ca> ---
Created attachment 124238
  --> https://bugs.kde.org/attachment.cgi?id=124238&action=edit
valgrind log from kinfocenter run when clicking Energy Information, File
Indexer Monitor, then Energy Information

I ran valgrind --log-file=valgrind-kinfocenter-energy-index-1.txt
--track-origins=yes kinfocenter & I reproduced the crash in the same way as in
my previous comment. The valgrind log showed an invalid read in wl_proxy_unref
at wayland-client.c:229 and an invalid write in wl_proxy_unref at
wayland-client.c:230 in libwayland-client. They appeared to be use-after-free
errors like those I've previously reported for kwin_wayland, plasmashell,
konsole, powerdevil, etc. ( https://bugs.kde.org/show_bug.cgi?id=409688 ) 84
Conditional jump or move depends on uninitialised value(s) and 13 Use of
uninitialised value  messages were shown.

An invalid read in QMetaObject::cast at qmetaobject.cpp:381 in freed memory was
followed by an invalid read "Address 0x5300000000 is not stack'd, malloc'd or
(recently) free'd" at the same line. This trace looks like that of the crashing
thread. The use-after-free error might've led to the segmentation fault due to
the invalid pointer.

==5320== Invalid read of size 8
==5320==    at 0x5CA7FA0: QMetaObject::cast(QObject const*) const
(qmetaobject.cpp:381)
==5320==    by 0x2880DAE0: qobject_cast<Solid::Battery*> (qobject.h:504)
==5320==    by 0x2880DAE0: as<Solid::Battery> (device.h:233)
==5320==    by 0x2880DAE0: BatteryModel::data(QModelIndex const&, int) const
(batterymodel.cpp:75)
==5320==    by 0x68F874A: data (qabstractitemmodel.h:458)
==5320==    by 0x68F874A: value (qqmladaptormodel.cpp:414)
==5320==    by 0x68F874A: QQmlDMCachedModelData::metaCall(QMetaObject::Call,
int, void**) (qqmladaptormodel.cpp:282)
==5320==    by 0x6A0A043: readProperty (qqmlpropertycache_p.h:328)
==5320==    by 0x6A0A043: loadProperty(QV4::ExecutionEngine*, QObject*,
QQmlPropertyData const&) (qv4qobjectwrapper.cpp:178)
==5320==    by 0x6A0BB3B:
QV4::QObjectWrapper::virtualResolveLookupGetter(QV4::Object const*,
QV4::ExecutionEngine*, QV4::Lookup*) (qv4qobjectwrapper.cpp:877)
==5320==    by 0x6A2A714: QV4::Moth::VME::interpret(QV4::CppStackFrame*,
QV4::ExecutionEngine*, char const*) (qv4vme_moth.cpp:621)
==5320==    by 0x6A2F556: QV4::Moth::VME::exec(QV4::CppStackFrame*,
QV4::ExecutionEngine*) (qv4vme_moth.cpp:447)
==5320==    by 0x69BC8FE: QV4::Function::call(QV4::Value const*, QV4::Value
const*, int, QV4::ExecutionContext const*) (qv4function.cpp:68)
==5320==    by 0x6B45C06: QQmlJavaScriptExpression::evaluate(QV4::CallData*,
bool*) (qqmljavascriptexpression.cpp:211)
==5320==    by 0x6B4B9B2: QQmlBinding::evaluate(bool*) (qqmlbinding.cpp:209)
==5320==    by 0x6B504E9:
QQmlNonbindingBinding::doUpdate(QQmlJavaScriptExpression::DeleteWatcher const&,
QFlags<QQmlPropertyData::WriteFlag>, QV4::Scope&) (qqmlbinding.cpp:245)
==5320==    by 0x6B4CC93:
QQmlBinding::update(QFlags<QQmlPropertyData::WriteFlag>) (qqmlbinding.cpp:185)
==5320==  Address 0x2ae6bf60 is 0 bytes inside a block of size 192 free'd
==5320==    at 0x483AA0C: free (vg_replace_malloc.c:540)
==5320==    by 0x68EEEAF: UnknownInlinedFun (qarraydata.h:239)
==5320==    by 0x68EEEAF: ~QString (qstring.h:1135)
==5320==    by 0x68EEEAF: node_destruct (qlist.h:499)
==5320==    by 0x68EEEAF: dealloc (qlist.h:868)
==5320==    by 0x68EEEAF: QList<QString>::~QList() (qlist.h:830)
==5320==    by 0x692050E: ~QStringList (qstringlist.h:99)
==5320==    by 0x692050E: QV4::CompiledData::CompilationUnit::loadFromDisk(QUrl
const&, QDateTime const&, QString*) (qv4compileddata.cpp:658)
==5320==    by 0x6B0C07F:
QQmlScriptBlob::dataReceived(QQmlDataBlob::SourceCodeData const&)
(qqmltypeloader.cpp:3020)
==5320==    by 0x6B04AB1: QQmlTypeLoader::setData(QQmlDataBlob*,
QQmlDataBlob::SourceCodeData const&) (qqmltypeloader.cpp:1302)
==5320==    by 0x6B053DC: QQmlTypeLoader::setData(QQmlDataBlob*, QString
const&) (qqmltypeloader.cpp:1292)
==5320==    by 0x6B0550C: QQmlTypeLoader::loadThread(QQmlDataBlob*)
(qqmltypeloader.cpp:1162)
==5320==    by 0x6B134FB: loadThread (qqmltypeloader.cpp:1007)
==5320==    by 0x6B134FB: void QQmlTypeLoader::doLoad<PlainLoader>(PlainLoader
const&, QQmlDataBlob*, QQmlTypeLoader::Mode) (qqmltypeloader.cpp:1066)
==5320==    by 0x6B05779: QQmlTypeLoader::load(QQmlDataBlob*,
QQmlTypeLoader::Mode) (qqmltypeloader.cpp:1098)
==5320==    by 0x6B05E6E: QQmlTypeLoader::getScript(QUrl const&)
(qqmltypeloader.cpp:1760)
==5320==    by 0x6B0896A:
QQmlTypeLoader::Blob::addImport(QV4::CompiledData::Import const*,
QList<QQmlError>*) (qqmltypeloader.cpp:1444)
==5320==    by 0x6B09F6C: QQmlTypeData::tryLoadFromDiskCache()
(qqmltypeloader.cpp:2215)
==5320==  Block was alloc'd at
==5320==    at 0x483980B: malloc (vg_replace_malloc.c:309)
==5320==    by 0x5B02100: QArrayData::allocate(unsigned long, unsigned long,
unsigned long, QFlags<QArrayData::AllocationOption>) (qarraydata.cpp:118)
==5320==    by 0x5B71896: UnknownInlinedFun (qarraydata.h:224)
==5320==    by 0x5B71896: QString::QString(int, Qt::Initialization)
(qstring.cpp:2176)
==5320==    by 0x691BF5A: convertTo<QString> (qstringbuilder.h:112)
==5320==    by 0x691BF5A: operator
QStringBuilder<QStringBuilder<QStringBuilder<QString, QString>, QLatin1Char>,
QString>::ConvertTo (qstringbuilder.h:131)
==5320==    by 0x691BF5A:
QV4::CompiledData::CompilationUnit::localCacheFilePath(QUrl const&)
(qv4compileddata.cpp:140)
==5320==    by 0x6920382: QV4::CompiledData::CompilationUnit::loadFromDisk(QUrl
const&, QDateTime const&, QString*) (qv4compileddata.cpp:658)
==5320==    by 0x6B0C07F:
QQmlScriptBlob::dataReceived(QQmlDataBlob::SourceCodeData const&)
(qqmltypeloader.cpp:3020)
==5320==    by 0x6B04AB1: QQmlTypeLoader::setData(QQmlDataBlob*,
QQmlDataBlob::SourceCodeData const&) (qqmltypeloader.cpp:1302)
==5320==    by 0x6B053DC: QQmlTypeLoader::setData(QQmlDataBlob*, QString
const&) (qqmltypeloader.cpp:1292)
==5320==    by 0x6B0550C: QQmlTypeLoader::loadThread(QQmlDataBlob*)
(qqmltypeloader.cpp:1162)
==5320==    by 0x6B134FB: loadThread (qqmltypeloader.cpp:1007)
==5320==    by 0x6B134FB: void QQmlTypeLoader::doLoad<PlainLoader>(PlainLoader
const&, QQmlDataBlob*, QQmlTypeLoader::Mode) (qqmltypeloader.cpp:1066)
==5320==    by 0x6B05779: QQmlTypeLoader::load(QQmlDataBlob*,
QQmlTypeLoader::Mode) (qqmltypeloader.cpp:1098)
==5320==    by 0x6B05E6E: QQmlTypeLoader::getScript(QUrl const&)
(qqmltypeloader.cpp:1760)
==5320== 
==5320== 
==5320== More than 100 errors detected.  Subsequent errors
==5320== will still be recorded, but in less detail than before.
==5320== Invalid read of size 8
==5320==    at 0x5CA7FAC: QMetaObject::cast(QObject const*) const
(qmetaobject.cpp:381)
==5320==    by 0x2880DAE0: qobject_cast<Solid::Battery*> (qobject.h:504)
==5320==    by 0x2880DAE0: as<Solid::Battery> (device.h:233)
==5320==    by 0x2880DAE0: BatteryModel::data(QModelIndex const&, int) const
(batterymodel.cpp:75)
==5320==    by 0x68F874A: data (qabstractitemmodel.h:458)
==5320==    by 0x68F874A: value (qqmladaptormodel.cpp:414)
==5320==    by 0x68F874A: QQmlDMCachedModelData::metaCall(QMetaObject::Call,
int, void**) (qqmladaptormodel.cpp:282)
==5320==    by 0x6A0A043: readProperty (qqmlpropertycache_p.h:328)
==5320==    by 0x6A0A043: loadProperty(QV4::ExecutionEngine*, QObject*,
QQmlPropertyData const&) (qv4qobjectwrapper.cpp:178)
==5320==    by 0x6A0BB3B:
QV4::QObjectWrapper::virtualResolveLookupGetter(QV4::Object const*,
QV4::ExecutionEngine*, QV4::Lookup*) (qv4qobjectwrapper.cpp:877)
==5320==    by 0x6A2A714: QV4::Moth::VME::interpret(QV4::CppStackFrame*,
QV4::ExecutionEngine*, char const*) (qv4vme_moth.cpp:621)
==5320==    by 0x6A2F556: QV4::Moth::VME::exec(QV4::CppStackFrame*,
QV4::ExecutionEngine*) (qv4vme_moth.cpp:447)
==5320==    by 0x69BC8FE: QV4::Function::call(QV4::Value const*, QV4::Value
const*, int, QV4::ExecutionContext const*) (qv4function.cpp:68)
==5320==    by 0x6B45C06: QQmlJavaScriptExpression::evaluate(QV4::CallData*,
bool*) (qqmljavascriptexpression.cpp:211)
==5320==    by 0x6B4B9B2: QQmlBinding::evaluate(bool*) (qqmlbinding.cpp:209)
==5320==    by 0x6B504E9:
QQmlNonbindingBinding::doUpdate(QQmlJavaScriptExpression::DeleteWatcher const&,
QFlags<QQmlPropertyData::WriteFlag>, QV4::Scope&) (qqmlbinding.cpp:245)
==5320==    by 0x6B4CC93:
QQmlBinding::update(QFlags<QQmlPropertyData::WriteFlag>) (qqmlbinding.cpp:185)
==5320==  Address 0x5300000000 is not stack'd, malloc'd or (recently) free'd
==5320== 


Two further invalid reads were shown in socketNotifierSourceCheck at
qeventdispatcher_glib.cpp:88 and 79 which looked like use-after-free errors.
Those errors might be side-effects of the segmentation fault. I've seen this
crash 4/4 times. I'm attaching the full valgrind log.

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to