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

            Bug ID: 478864
           Summary: Nested kwin_wayland 5.90.0 crashed in
                    QArrayDataPointer<std::shared_ptr<KWin::EglSwapchainSl
                    ot> >::constEnd in VMs using the llvmpipe driver
    Classification: Plasma
           Product: kwin
           Version: 5.90.0
          Platform: Fedora RPMs
                OS: Linux
            Status: REPORTED
          Severity: normal
          Priority: NOR
         Component: wayland-generic
          Assignee: kwin-bugs-n...@kde.org
          Reporter: matt.fagn...@bell.net
  Target Milestone: ---

SUMMARY

I booted the Fedora Rawhide/40 KDE Plasma live image
Fedora-KDE-Live-x86_64-Rawhide-20231220.n.0.iso in a QEMU/KVM VM using GNOME
Boxes with 3D acceleration disabled using the llvmpipe driver from mesa 23.3.1.
Plasma 5.90.0 on Wayland started. I started Konsole. I tried to run a nested
kwin_wayland session using the instructions at
https://community.kde.org/KWin/Wayland
export $(dbus-launch)
kwin_wayland --xwayland 

The nested kwin_wayland window didn't appear. The following output was in
Konsole which showed a Permission denied error and a segmentation fault of
kwin_wayland.

kwin_wayland --xwayland
No backend specified, automatically choosing Wayland because WAYLAND_DISPLAY is
set
unable to lock lockfile /run/user/1000/wayland-0.lock, maybe another compositor
is running
kwin_core: Parse error in tiles configuration for monitor
"7fb8c463-c102-5440-8fb7-5253b26b5d9c" : "illegal value" Creating default setup
OpenGL vendor string:                   Mesa
OpenGL renderer string:                 llvmpipe (LLVM 17.0.6, 256 bits)
OpenGL version string:                  4.5 (Core Profile) Mesa 23.3.1
OpenGL shading language version string: 4.50
Driver:                                 LLVMpipe
GPU class:                              Unknown
OpenGL version:                         4.5
GLSL version:                           4.50
Mesa version:                           23.3.1
Requires strict binding:                no
Virtual Machine:                        no
Timer query support:                    yes
KMS: DRM_IOCTL_MODE_CREATE_DUMB failed: Permission denied
Segmentation fault (core dumped)

The nested kwin_wayland crashed in
QArrayDataPointer<std::shared_ptr<KWin::EglSwapchainSlot> >::constEnd. The
crash might've been due to a null pointer dereference since this=0x0 in
KWin::EglSwapchain::acquire in frame 2.

Core was generated by `kwin_wayland --xwayland'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x00007fe3776caece in
QArrayDataPointer<std::shared_ptr<KWin::EglSwapchainSlot> >::constEnd
(this=<optimized out>)
    at /usr/include/qt6/QtCore/qarraydatapointer.h:121

warning: 121    /usr/include/qt6/QtCore/qarraydatapointer.h: No such file or
directory
[Current thread is 1 (Thread 0x7fe3763ff000 (LWP 3019))]
 (gdb) bt
#0  0x00007fe3776caece in
QArrayDataPointer<std::shared_ptr<KWin::EglSwapchainSlot> >::constEnd
(this=<optimized out>)
    at /usr/include/qt6/QtCore/qarraydatapointer.h:121
#1  QList<std::shared_ptr<KWin::EglSwapchainSlot> >::end (this=<optimized out>)
at /usr/include/qt6/QtCore/qlist.h:612
#2  KWin::EglSwapchain::acquire (this=0x0) at
/usr/src/debug/kwin-5.90.0-3.fc40.x86_64/src/platformsupport/scenes/opengl/eglswapchain.cpp:103
#3  0x00007fe3776a7b13 in KWin::Wayland::WaylandEglCursorLayer::beginFrame
(this=0x5557d102aa60) at /usr/include/c++/13/bits/shared_ptr_base.h:1665
#4  0x00007fe37740822a in operator() (__closure=<synthetic pointer>) at
/usr/src/debug/kwin-5.90.0-3.fc40.x86_64/src/compositor_wayland.cpp:301
#5  operator() (__closure=__closure@entry=0x7fff40893770) at
/usr/src/debug/kwin-5.90.0-3.fc40.x86_64/src/compositor_wayland.cpp:321
#6  0x00007fe37740895e in KWin::WaylandCompositor::addOutput
(this=this@entry=0x5557d0f77fe0, output=0x5557d0dedd00)
    at /usr/src/debug/kwin-5.90.0-3.fc40.x86_64/src/compositor_wayland.cpp:355
#7  0x00007fe377408dff in KWin::WaylandCompositor::start (this=0x5557d0f77fe0)
at /usr/src/debug/kwin-5.90.0-3.fc40.x86_64/src/compositor_wayland.cpp:188
#8  0x00007fe3747f3827 in QObject::event (this=0x5557d0f77fe0,
e=0x5557d0f78340) at
/usr/src/debug/qt6-qtbase-6.6.1-1.fc40.x86_64/src/corelib/kernel/qobject.cpp:1437
#9  0x00007fe375bc3168 in QApplicationPrivate::notify_helper(QObject*, QEvent*)
() from /lib64/libQt6Widgets.so.6
#10 0x00007fe3747a0e08 in QCoreApplication::notifyInternal2
(receiver=0x5557d0f77fe0, event=0x5557d0f78340)
    at
/usr/src/debug/qt6-qtbase-6.6.1-1.fc40.x86_64/src/corelib/kernel/qcoreapplication.cpp:1121
#11 0x00007fe3747a100d in QCoreApplication::sendEvent (receiver=<optimized
out>, event=<optimized out>)
    at
/usr/src/debug/qt6-qtbase-6.6.1-1.fc40.x86_64/src/corelib/kernel/qcoreapplication.cpp:1539
#12 0x00007fe3747a4d05 in QCoreApplicationPrivate::sendPostedEvents
(receiver=receiver@entry=0x0, event_type=event_type@entry=0,
data=data@entry=0x5557d0d95dc0)
    at
/usr/src/debug/qt6-qtbase-6.6.1-1.fc40.x86_64/src/corelib/kernel/qcoreapplication.cpp:1901
#13 0x00007fe37494b786 in QEventDispatcherUNIX::processEvents
(this=0x5557d0da4910, flags=...)
    at
/usr/src/debug/qt6-qtbase-6.6.1-1.fc40.x86_64/src/corelib/kernel/qeventdispatcher_unix.cpp:432
#14 0x00007fe375540e42 in
QUnixEventDispatcherQPA::processEvents(QFlags<QEventLoop::ProcessEventsFlag>)
() from /lib64/libQt6Gui.so.6
#15 0x00007fe3747adbcb in QEventLoop::exec (this=this@entry=0x7fff40893c60,
flags=..., flags@entry=...)
    at
/usr/src/debug/qt6-qtbase-6.6.1-1.fc40.x86_64/src/corelib/global/qflags.h:34
#16 0x00007fe3747a99cd in QCoreApplication::exec () at
/usr/src/debug/qt6-qtbase-6.6.1-1.fc40.x86_64/src/corelib/global/qflags.h:74
#17 0x00005557cf142dd4 in main ()

This problem happened 2/2 times I tried to run a nested kwin_wayland session in
a VM using the llvmpipe driver. Nested kwin_wayland started normally in VMs
with the same image using 3D acceleration enabled using the virgl mesa driver.
The problem might be specific to the use of llvmpipe in a VM.

STEPS TO REPRODUCE
1. Boot a Fedora 39 KDE Plasma installation updated to 2023-12-21 with
updates-testing enabled
2. Log in to Plasma 5.27.10 on Wayland
3. Start Konsole
4. Install GNOME Boxes if it isn't already with sudo dnf install gnome-boxes
5. Download Fedora-KDE-Live-x86_64-Rawhide-20231220.n.0.iso from
https://koji.fedoraproject.org/koji/buildinfo?buildID=2335875
6. Start GNOME Boxes
7. Boot Fedora-KDE-Live-x86_64-Rawhide-20231220.n.0.iso in a GNOME Boxes
QEMU/KVM VM with 3 GiB RAM, UEFI enabled, and 3D acceleration disabled
8. To work around https://bugs.kde.org/show_bug.cgi?id=477643, switch to VT2 in
GNOME boxes via the keyboard menu Ctrl+Alt+F2 and back to VT1 with Ctrl+Alt+F1
after the Plasma 5.90.0 splash screen is shown for several seconds
9. Start Konsole
10. In Konsole, run 
export $(dbus-launch)
kwin_wayland --xwayland 

OBSERVED RESULT
Nested kwin_wayland 5.90.0 crashed in
QArrayDataPointer<std::shared_ptr<KWin::EglSwapchainSlot> >::constEnd in VMs
using the llvmpipe driver

EXPECTED RESULT
Nested kwin_wayland shouldn't have crashed

SOFTWARE/OS VERSIONS
Linux/KDE Plasma: Fedora Rawhide/40
(available in About System)
KDE Plasma Version: 5.90.0
KDE Frameworks Version: 5.246.0
Qt Version: 6.6.1

ADDITIONAL INFORMATION
This problem is like that at https://bugs.kde.org/show_bug.cgi?id=466281 but
had a different trace.

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

Reply via email to