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

--- Comment #2 from Matt Fagnani <matt.fagn...@bell.net> ---
Created attachment 153422
  --> https://bugs.kde.org/attachment.cgi?id=153422&action=edit
valgrind log for kscreenlocker_greeter --testing crash

Your interpretation agrees with lines like kscreenlocker_greet[2312]:
qt.qpa.wayland: Creating a fake screen in order for Qt not to crash in the
journal and QtWayland::wl_surface::object having this=0x10. I ran valgrind
--log-file=valgrind-kscreenlocker_greet-1.txt --enable-debuginfod=no
/usr/libexec/kscreenlocker_greet --testing in a VM like the one I described.
Nine invalid reads of 16 bytes were shown in the valgrind log which were less
than 16 bytes from the end of the buffers, and so they might've been overreads.
The first such invalid read was

==3353== Invalid read of size 16
==3353==    at 0x2B3566D8: ???
==3353==    by 0x2B222C6B: ???
==3353==  Address 0x2b223c6e is 46,222 bytes inside a block of size 46,228
alloc'd
==3353==    at 0x484186F: malloc (vg_replace_malloc.c:393)
==3353==    by 0x6330581: QArrayData::allocate(unsigned long, unsigned long,
unsigned long, QFlags<QArrayData::AllocationOption>) (qarraydata.cpp:218)
==3353==    by 0x63B225D: allocate (qarraydata.h:225)
==3353==    by 0x63B225D: QString::fromLatin1_helper(char const*, int)
(qstring.cpp:5464)
==3353==    by 0x263DF999: UnknownInlinedFun (qstring.h:701)
==3353==    by 0x263DF999: UnknownInlinedFun (qstring.h:713)
==3353==    by 0x263DF999: Plasma::SharedSvgRenderer::load(QByteArray const&,
QString const&, QHash<QString, QRectF>&) [clone .isra.0] (svg.cpp:134)
==3353==    by 0x263CD0B3: UnknownInlinedFun (svg.cpp:81)
==3353==    by 0x263CD0B3: Plasma::SvgPrivate::createRenderer() [clone .part.0]
(svg.cpp:681)
==3353==    by 0x263BE617: UnknownInlinedFun (qbasicatomic.h:118)
==3353==    by 0x263BE617: UnknownInlinedFun (svg.cpp:756)
==3353==    by 0x263BE617: Plasma::SvgPrivate::elementRect(QString const&)
(svg.cpp:745)
==3353==    by 0x263BE8ED: Plasma::Svg::hasElement(QString const&) const
(svg.cpp:1074)
==3353==    by 0x2659B6AC: UnknownInlinedFun (iconitem.cpp:169)
==3353==    by 0x2659B6AC: IconItem::setSource(QVariant const&)
(iconitem.cpp:370)
==3353==    by 0x2658971A: IconItem::qt_metacall(QMetaObject::Call, int,
void**) (moc_iconitem.cpp:385)
==3353==    by 0x582CCD4: QQmlVMEMetaObject::metaCall(QObject*,
QMetaObject::Call, int, void**) (in /usr/lib64/libQt5Qml.so.5.15.7)
==3353==    by 0x58B5DDD: ??? (in /usr/lib64/libQt5Qml.so.5.15.7)
==3353==    by 0x58B8362: QQmlObjectCreator::setPropertyValue(QQmlPropertyData
const*, QV4::CompiledData::Binding const*) (in /usr/lib64/libQt5Qml.so.5.15.7)
==3353== 

The traces where the invalid reads happened all had ??? instead of the
functions and lines so they're harder to interpret. Some Conditional jump or
move depends on uninitialised value(s) lines were shown. Then there was an
invalid read of 8 bytes at 0x18 in UnknownInlinedFun (qwayland-wayland.h:637)
with a trace like I reported resulting in the segmentation fault.

==3353== Invalid read of size 8
==3353==    at 0x4ACEDA6: UnknownInlinedFun (qwayland-wayland.h:637)
==3353==    by 0x4ACEDA6:
LayerShellQt::QWaylandLayerSurface::QWaylandLayerSurface(LayerShellQt::QWaylandLayerShell*,
QtWaylandClient::QWaylandWindow*) (qwaylandlayersurface.cpp:38)
==3353==    by 0x4ACF5B8:
LayerShellQt::QWaylandLayerShell::createLayerSurface(QtWaylandClient::QWaylandWindow*)
(qwaylandlayershell.cpp:26)
==3353==    by 0x6C7D514: QtWaylandClient::QWaylandWindow::initWindow()
(qwaylandwindow.cpp:141)
==3353==    by 0x6C7D84C: UnknownInlinedFun (qwaylandwindow.cpp:436)
==3353==    by 0x6C7D84C: .LTHUNK9.lto_priv.0 (qwaylandwindow.cpp:428)
==3353==    by 0x5D76096: QWindowPrivate::setVisible(bool) (in
/usr/lib64/libQt5Gui.so.5.15.7)
==3353==    by 0x11F7BE: ScreenLocker::UnlockApp::createViewForScreen(QScreen*)
(greeterapp.cpp:417)
==3353==    by 0x11FF33: ScreenLocker::UnlockApp::handleScreen(QScreen*)
(greeterapp.cpp:306)
==3353==    by 0x116DDF: UnknownInlinedFun (greeterapp.cpp:296)
==3353==    by 0x116DDF: main (main.cpp:187)
==3353==  Address 0x18 is not stack'd, malloc'd or (recently) free'd
==3353== 
==3353== 
==3353== Process terminating with default action of signal 11 (SIGSEGV):
dumping core
==3353==  Access not within mapped region at address 0x18
==3353==    at 0x4ACEDA6: UnknownInlinedFun (qwayland-wayland.h:637)
==3353==    by 0x4ACEDA6:
LayerShellQt::QWaylandLayerSurface::QWaylandLayerSurface(LayerShellQt::QWaylandLayerShell*,
QtWaylandClient::QWaylandWindow*) (qwaylandlayersurface.cpp:38)
==3353==    by 0x4ACF5B8:
LayerShellQt::QWaylandLayerShell::createLayerSurface(QtWaylandClient::QWaylandWindow*)
(qwaylandlayershell.cpp:26)
==3353==    by 0x6C7D514: QtWaylandClient::QWaylandWindow::initWindow()
(qwaylandwindow.cpp:141)
==3353==    by 0x6C7D84C: UnknownInlinedFun (qwaylandwindow.cpp:436)
==3353==    by 0x6C7D84C: .LTHUNK9.lto_priv.0 (qwaylandwindow.cpp:428)
==3353==    by 0x5D76096: QWindowPrivate::setVisible(bool) (in
/usr/lib64/libQt5Gui.so.5.15.7)
==3353==    by 0x11F7BE: ScreenLocker::UnlockApp::createViewForScreen(QScreen*)
(greeterapp.cpp:417)
==3353==    by 0x11FF33: ScreenLocker::UnlockApp::handleScreen(QScreen*)
(greeterapp.cpp:306)
==3353==    by 0x116DDF: UnknownInlinedFun (greeterapp.cpp:296)
==3353==    by 0x116DDF: main (main.cpp:187)

I'm attached the full valgrind log.

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

Reply via email to