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

--- Comment #13 from Matt Fagnani <matthew.fagn...@utoronto.ca> ---
Created attachment 124037
  --> https://bugs.kde.org/attachment.cgi?id=124037&action=edit
valgrind log file for system settings segmentation fault

I ran valgrind --log-file=valgrind-systemsettings5-2.txt systemsettings5 &
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 ) Several Conditional jump or move
depends on uninitialised value(s) messages were shown. An invalid read at in
load at atomic_base.h:740 of the address 0xb was shown which had a similar
trace similar to that of the crashing threads.

==4968== Invalid read of size 8
==4968==    at 0x5D136AA: load (atomic_base.h:740)
==4968==    by 0x5D136AA: load (atomic:519)
==4968==    by 0x5D136AA: load<QtSharedPointer::ExternalRefCountData*>
(qatomic_cxx11.h:227)
==4968==    by 0x5D136AA: load (qbasicatomic.h:239)
==4968==    by 0x5D136AA:
QtSharedPointer::ExternalRefCountData::getAndRef(QObject const*)
(qsharedpointer.cpp:1358)
==4968==    by 0x6ECFCF7: QWeakPointer<QObject> (qsharedpointer_impl.h:688)
==4968==    by 0x6ECFCF7: assign<QObject> (qsharedpointer_impl.h:684)
==4968==    by 0x6ECFCF7: operator= (qpointer.h:83)
==4968==    by 0x6ECFCF7:
QQmlListReferencePrivate::init(QQmlListProperty<QObject> const&, int,
QQmlEngine*) (qqmllist.cpp:64)
==4968==    by 0x6EDE064: QV4::QmlListWrapper::toVariant() const
(qqmllistwrapper.cpp:101)
==4968==    by 0x6E20603: toVariant(QV4::ExecutionEngine*, QV4::Value const&,
int, bool, QSet<QV4::Heap::Object*>*) (qv4engine.cpp:1306)
==4968==    by 0x6E20A68: QV4::ExecutionEngine::toVariant(QV4::Value const&,
int, bool) (qv4engine.cpp:1271)
==4968==    by 0x6ED8B24: QQmlBinding::slowWrite(QQmlPropertyData const&,
QQmlPropertyData const&, QV4::Value const&, bool,
QFlags<QQmlPropertyData::WriteFlag>) (qqmlbinding.cpp:415)
==4968==    by 0x6EDA8F2: GenericBinding<2>::write(QV4::Value const&, bool,
QFlags<QQmlPropertyData::WriteFlag>) (qqmlbinding.cpp:325)
==4968==    by 0x6EDB53F:
QQmlNonbindingBinding::doUpdate(QQmlJavaScriptExpression::DeleteWatcher const&,
QFlags<QQmlPropertyData::WriteFlag>, QV4::Scope&) (qqmlbinding.cpp:249)
==4968==    by 0x6ED7C93:
QQmlBinding::update(QFlags<QQmlPropertyData::WriteFlag>) (qqmlbinding.cpp:185)
==4968==    by 0x6EE6825:
QQmlObjectCreator::finalize(QQmlInstantiationInterrupt&)
(qqmlobjectcreator.cpp:1352)
==4968==    by 0x6E65F80: complete (qqmlcomponent.cpp:935)
==4968==    by 0x6E65F80: QQmlComponentPrivate::complete(QQmlEnginePrivate*,
QQmlComponentPrivate::ConstructionState*) (qqmlcomponent.cpp:931)
==4968==    by 0x6E66091: completeCreate (qqmlcomponent.cpp:971)
==4968==    by 0x6E66091: QQmlComponentPrivate::completeCreate()
(qqmlcomponent.cpp:966)
==4968==  Address 0xb is not stack'd, malloc'd or (recently) free'd
==4968== 

This crash might be due to an invalid pointer from the earlier use-after-free
errors and use of uninitialized variables. Two further invalid reads were shown
in socketNotifierSourceCheck at qeventdispatcher_glib.cpp:88 which look like
use-after-free errors. Those errors might be side-effects of the segmentation
fault. I've seen this crash 9 times which is about half the times I've tried to
reproduce it. I'm attaching the full valgrind log.

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

Reply via email to