Bug 475423 - kwin_wayland crashes in KWin::WaylandWindow::belongsToSameApplication() when clicking on notification
Summary: kwin_wayland crashes in KWin::WaylandWindow::belongsToSameApplication() when ...
Status: RESOLVED FIXED
Alias: None
Product: kwin
Classification: Plasma
Component: wayland-generic (other bugs)
Version First Reported In: master
Platform: Other Linux
: NOR crash
Target Milestone: ---
Assignee: KWin default assignee
URL:
Keywords: qt6
: 477868 (view as bug list)
Depends on:
Blocks:
 
Reported: 2023-10-10 12:35 UTC by Nicolas Fella
Modified: 2023-12-05 22:26 UTC (History)
2 users (show)

See Also:
Latest Commit:
Version Fixed/Implemented In:
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Nicolas Fella 2023-10-10 12:35:24 UTC
STEPS TO REPRODUCE
1. Click on notification popup

OBSERVED RESULT

#0  KWin::SurfaceInterface::client() const (this=0x0) at /usr/include/c++/13/bits/unique_ptr.h:199
#1  0x00007fd8ca21962b in KWin::WaylandWindow::belongsToSameApplication(KWin::Window const*, QFlags<KWin::Window::SameApplicationCheck>) const
    (this=0x260bd80, other=<optimized out>, checks=...) at /home/nico/kde/src/kwin/src/waylandwindow.cpp:136
#2  0x00007fd8ca12b11d in KWin::Workspace::raiseWindowWithinApplication(KWin::Window*) (this=0xa9d1f0, window=0x2d86b00)
    at /home/nico/kde/usr/include/QtCore/qflags.h:73
#3  0x00007fd8ca12b22b in KWin::Workspace::raiseWindowRequest(KWin::Window*, NET::RequestSource, unsigned int)
    (src=<optimized out>, timestamp=<optimized out>, window=0x2d86b00, this=0xa9d1f0) at /home/nico/kde/src/kwin/src/layers.cpp:409
#4  KWin::Workspace::raiseWindowRequest(KWin::Window*, NET::RequestSource, unsigned int)
    (this=0xa9d1f0, window=0x2d86b00, src=<optimized out>, timestamp=<optimized out>) at /home/nico/kde/src/kwin/src/layers.cpp:404
#5  0x00007fd8ca12b377 in KWin::X11Window::restackWindow(unsigned int, int, NET::RequestSource, unsigned int, bool)
    (this=0x2d86b00, above=<optimized out>, detail=<optimized out>, src=<optimized out>, timestamp=61299748, send_event=false)
    at /home/nico/kde/src/kwin/src/workspace.h:830
#6  0x00007fd8ca0d993a in KWin::X11Window::configureRequestEvent(xcb_configure_request_event_t*) (e=0x2424cb0, this=0x2d86b00)
    at /home/nico/kde/src/kwin/src/events.cpp:731
#7  KWin::X11Window::configureRequestEvent(xcb_configure_request_event_t*) (this=0x2d86b00, e=0x2424cb0) at /home/nico/kde/src/kwin/src/events.cpp:702
#8  0x00007fd8ca0dc4a3 in KWin::X11Window::windowEvent(xcb_generic_event_t*) (this=0x2d86b00, e=e@entry=0x2424cb0) at /home/nico/kde/src/kwin/src/events.cpp:460
#9  0x00007fd8ca0dc91a in KWin::Workspace::workspaceEvent(xcb_generic_event_t*) (this=0xa9d1f0, e=0x2424cb0) at /home/nico/kde/src/kwin/src/events.cpp:165
#10 0x00007fd8c6d5730f in QAbstractEventDispatcher::filterNativeEvent(QByteArray const&, void*, long long*)
    (this=<optimized out>, eventType=..., message=message@entry=0x2424cb0, result=result@entry=0x7ffe0aff56b8)
    at /home/nico/workspace/qt6/qtbase/src/corelib/kernel/qabstracteventdispatcher.cpp:432
#11 0x0000000000454bb2 in KWin::Xwl::Xwayland::dispatchEvents(KWin::Xwl::Xwayland::DispatchEventsMode) (this=<optimized out>, mode=<optimized out>)
    at /home/nico/kde/src/kwin/src/xwayland/xwayland.cpp:247
#12 0x00007fd8c6db5fa3 in QtPrivate::QSlotObjectBase::call(QObject*, void**) (a=0x7ffe0aff57e0, r=0x11d5c30, this=0x2097f00)
    at /home/nico/workspace/qt6/qtbase/src/corelib/kernel/qobjectdefs_impl.h:433
#13 doActivate<false>(QObject*, int, void**) (sender=0x1ed0530, signal_index=3, argv=0x7ffe0aff57e0)
    at /home/nico/workspace/qt6/qtbase/src/corelib/kernel/qobject.cpp:4021
#14 0x00007fd8c6dadcdf in QMetaObject::activate(QObject*, QMetaObject const*, int, void**)
    (sender=sender@entry=0x1ed0530, m=m@entry=0x7fd8c720c000 <QSocketNotifier::staticMetaObject>, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7ffe0aff57e0) at /home/nico/workspace/qt6/qtbase/src/corelib/kernel/qobject.cpp:4081
#15 0x00007fd8c6dc26af in QSocketNotifier::activated(QSocketDescriptor, QSocketNotifier::Type, QSocketNotifier::QPrivateSignal)
    (this=this@entry=0x1ed0530, _t1=..., _t2=<optimized out>, _t3=...) at /home/nico/workspace/qt6/qtbase/src/corelib/Core_autogen/include/moc_qsocketnotifier.cpp:231
#16 0x00007fd8c6dc2d9d in QSocketNotifier::event(QEvent*) (this=0x1ed0530, e=<optimized out>)
    at /home/nico/workspace/qt6/qtbase/src/corelib/kernel/qsocketnotifier.cpp:326
#17 0x00007fd8c817f981 in QApplicationPrivate::notify_helper(QObject*, QEvent*) (this=<optimized out>, receiver=0x1ed0530, e=0x7ffe0aff58f0)
    at /home/nico/workspace/qt6/qtbase/src/widgets/kernel/qapplication.cpp:3295
#18 0x00007fd8c6d59b08 in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x1ed0530, event=0x7ffe0aff58f0)
    at /home/nico/workspace/qt6/qtbase/src/corelib/kernel/qcoreapplication.cpp:1119
#19 0x00007fd8c6d59c89 in QCoreApplication::sendEvent(QObject*, QEvent*) (receiver=<optimized out>, event=<optimized out>)
    at /home/nico/workspace/qt6/qtbase/src/corelib/kernel/qcoreapplication.cpp:1537
#20 0x00007fd8c6eeb73e in QEventDispatcherUNIXPrivate::activateSocketNotifiers() (this=this@entry=0x963ce0)
    at /home/nico/workspace/qt6/qtbase/src/corelib/kernel/qeventdispatcher_unix.cpp:268
#21 0x00007fd8c6eebda9 in QEventDispatcherUNIX::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=<optimized out>, flags=...)
    at /home/nico/workspace/qt6/qtbase/src/corelib/kernel/qeventdispatcher_unix.cpp:477
#22 0x00007fd8c7aaae3d in QUnixEventDispatcherQPA::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=<optimized out>, flags=...)
    at /home/nico/workspace/qt6/qtbase/src/gui/platform/unix/qunixeventdispatcher.cpp:27
#23 0x00007fd8c6d656bb in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x7ffe0aff5a80, flags=..., flags@entry=...)
    at /home/nico/workspace/qt6/qtbase/src/corelib/global/qflags.h:34
#24 0x00007fd8c6d620c2 in QCoreApplication::exec() () at /home/nico/workspace/qt6/qtbase/src/corelib/global/qflags.h:74
--Type <RET> for more, q to quit, c to continue without paging--c
#25 0x00007fd8c75b050c in QGuiApplication::exec() () at /home/nico/workspace/qt6/qtbase/src/gui/kernel/qguiapplication.cpp:1925
#26 0x00007fd8c817f8f5 in QApplication::exec() () at /home/nico/workspace/qt6/qtbase/src/widgets/kernel/qapplication.cpp:2574
#27 0x000000000043d5b7 in main(int, char**) (argc=<optimized out>, argv=<optimized out>) at /home/nico/kde/src/kwin/src/main_wayland.cpp:607

KDE Plasma Version: master
KDE Frameworks Version: master
Qt Version: 6.6

ADDITIONAL INFORMATION
kwin commit 2dd1c780309e5bcb533d5c84fb2808cd3917fe87
Comment 1 Nicolas Fella 2023-10-10 12:35:59 UTC
previously the same thing crashed with a different backtrace:

#0  0x00007f17e9b8e090 in std::default_delete<KWin::SurfaceState>::operator()(KWin::SurfaceState*) const (this=<optimized out>, __ptr=0x3a70230)
    at /usr/include/c++/13/bits/unique_ptr.h:93
#1  std::default_delete<KWin::SurfaceState>::operator()(KWin::SurfaceState*) const (__ptr=0x3a70230, this=<optimized out>) at /usr/include/c++/13/bits/unique_ptr.h:93
#2  std::unique_ptr<KWin::SurfaceState, std::default_delete<KWin::SurfaceState> >::~unique_ptr() (this=0x1c32840, __in_chrg=<optimized out>)
    at /usr/include/c++/13/bits/unique_ptr.h:404
#3  KWin::TransactionEntry::~TransactionEntry() (this=0x1c32820, __in_chrg=<optimized out>) at /home/nico/kde/src/kwin/src/wayland/transaction.h:27
#4  std::destroy_at<KWin::TransactionEntry>(KWin::TransactionEntry*) (__location=0x1c32820) at /usr/include/c++/13/bits/stl_construct.h:88
#5  std::_Destroy<KWin::TransactionEntry>(KWin::TransactionEntry*) (__pointer=0x1c32820) at /usr/include/c++/13/bits/stl_construct.h:149
#6  std::_Destroy_aux<false>::__destroy<KWin::TransactionEntry*>(KWin::TransactionEntry*, KWin::TransactionEntry*) (__last=0x0, __first=0x1c32820)
    at /usr/include/c++/13/bits/stl_construct.h:163
#7  std::_Destroy<KWin::TransactionEntry*>(KWin::TransactionEntry*, KWin::TransactionEntry*) (__last=0x0, __first=<optimized out>)
    at /usr/include/c++/13/bits/stl_construct.h:196
#8  std::_Destroy<KWin::TransactionEntry*, KWin::TransactionEntry>(KWin::TransactionEntry*, KWin::TransactionEntry*, std::allocator<KWin::TransactionEntry>&)
    (__last=0x0, __first=<optimized out>) at /usr/include/c++/13/bits/alloc_traits.h:947
#9  std::vector<KWin::TransactionEntry, std::allocator<KWin::TransactionEntry> >::~vector() (this=0xa29b80, __in_chrg=<optimized out>)
    at /usr/include/c++/13/bits/stl_vector.h:732
#10 KWin::Transaction::~Transaction() (this=0xa29b80, __in_chrg=<optimized out>) at /home/nico/kde/src/kwin/src/wayland/transaction.h:55
#11 KWin::SurfaceInterface::~SurfaceInterface() (this=0x60, __in_chrg=<optimized out>) at /home/nico/kde/src/kwin/src/wayland/surface.cpp:421
#12 0x0000000000a29b80 in  ()
#13 0x00007f17e992a07d in QArrayDataPointer<unsigned int>::tryReadjustFreeSpace(QArrayData::GrowthPosition, long long, unsigned int const**)
    (data=<optimized out>, n=<optimized out>, pos=<optimized out>, this=<optimized out>) at /home/nico/kde/usr/include/QtCore/qarraydatapointer.h:284
#14 QArrayDataPointer<unsigned int>::detachAndGrow(QArrayData::GrowthPosition, long long, unsigned int const**, QArrayDataPointer<unsigned int>*)
    (this=0x7f17e9a184eb <KWin::WaylandWindow::updateGeometry(QRectF const&)+91>, where=(unknown: 0x1fe9130), n=0, data=0x3a70230, old=0x0)
    at /home/nico/kde/usr/include/QtCore/qarraydatapointer.h:196
#15 0x0000000001fe9130 in  ()
#16 0x00007fff75582930 in  ()
#17 0x0000000001fe9130 in  ()
#18 0x0000000000000000 in  ()
Comment 2 Nicolas Fella 2023-10-16 12:17:28 UTC
This might be related to having an external screen connected
Comment 3 Nicolas Fella 2023-10-31 13:02:46 UTC
This seems to only happen while in a Zoom meeting
Comment 4 Bug Janitor Service 2023-11-28 20:10:08 UTC
A possibly relevant merge request was started @ https://invent.kde.org/plasma/kwin/-/merge_requests/4727
Comment 5 Vlad Zahorodnii 2023-11-29 14:04:44 UTC
Git commit 5e90452d0870e2ef3fcd4d6af1b5e41c07ca20c5 by Vlad Zahorodnii.
Committed on 29/11/2023 at 14:56.
Pushed by vladz into branch 'master'.

Add more closed window checks

The stack contains closed windows, so we need to guard against them.

M  +10   -4    src/layers.cpp

https://invent.kde.org/plasma/kwin/-/commit/5e90452d0870e2ef3fcd4d6af1b5e41c07ca20c5
Comment 6 Vlad Zahorodnii 2023-12-05 22:26:49 UTC
*** Bug 477868 has been marked as a duplicate of this bug. ***