Bug 494674 - Crash when maximizing window
Summary: Crash when maximizing window
Status: CONFIRMED
Alias: None
Product: kwin
Classification: Plasma
Component: generic-crash (show other bugs)
Version: 6.3.2
Platform: Debian unstable Linux
: NOR crash
Target Milestone: ---
Assignee: KWin default assignee
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2024-10-13 15:38 UTC by Moritz
Modified: 2025-03-01 15:11 UTC (History)
3 users (show)

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


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Moritz 2024-10-13 15:38:15 UTC
SUMMARY

Hi there, I have been seeing a somehow frequent (every 1-2 hours) crash of kwin after upgrading to kde plasma experimental on debian sid. It happens after I do some action (sometimes it is switching between windows, this time it was after maximizing xournal++).


STEPS TO REPRODUCE
Does not happen always. Hard to say.

OBSERVED RESULT
Crash


SOFTWARE/OS VERSIONS
Operating System: siduction 22.1.0
KDE Plasma Version: 6.2.0
KDE Frameworks Version: 6.6.0
Qt Version: 6.7.2
Kernel Version: 6.11.3-1-siduction-amd64 (64-bit)
Graphics Platform: Wayland
Processors: 16 × AMD Ryzen 7 3700X 8-Core Processor
Memory: 31,3 GiB of RAM
Graphics Processor: Mesa Intel® Arc
Product Name: X370 Killer SLI

ADDITIONAL INFORMATION
GPU: Intel Arc A750


gdp crash dump:
Thread 1 (Thread 0x7fb2aa1c7d40 (LWP 1069527) "kwin_wayland"):
#0  0x00007fb2bcc98afe in ?? () from /lib/x86_64-linux-gnu/libc.so.6
#1  0x00007fb2bcc9b380 in pthread_cond_wait () from /lib/x86_64-linux-gnu/libc.so.6
#2  0x00007fb2bd4d1513 in QWaitCondition::wait(QMutex*, QDeadlineTimer) () from /lib/x86_64-linux-gnu/libQt6Core.so.6
#3  0x00007fb2bf66d619 in ?? () from /lib/x86_64-linux-gnu/libQt6Quick.so.6
#4  0x00007fb2bdc1ba6c in QWindow::event(QEvent*) () from /lib/x86_64-linux-gnu/libQt6Gui.so.6
#5  0x00007fb2be5b2062 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /lib/x86_64-linux-gnu/libQt6Widgets.so.6
#6  0x00007fb2bd3879a8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /lib/x86_64-linux-gnu/libQt6Core.so.6
#7  0x00007fb2bdbd219b in QGuiApplicationPrivate::processExposeEvent(QWindowSystemInterfacePrivate::ExposeEvent*) () from /lib/x86_64-linux-gnu/libQt6Gui.so.6
#8  0x00007fb2bdc2285c in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /lib/x86_64-linux-gnu/libQt6Gui.so.6
#9  0x00007fb2bdc22a50 in QWindowSystemInterface::flushWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /lib/x86_64-linux-gnu/libQt6Gui.so.6
#10 0x00007fb2bdc00fb4 in QPlatformWindow::setVisible(bool) () from /lib/x86_64-linux-gnu/libQt6Gui.so.6
#11 0x00007fb2bdc13108 in QWindowPrivate::setVisible(bool) () from /lib/x86_64-linux-gnu/libQt6Gui.so.6
#12 0x00007fb2bee8d2d8 in ?? () from /lib/x86_64-linux-gnu/libQt6Qml.so.6
#13 0x00007fb2beea3fbe in ?? () from /lib/x86_64-linux-gnu/libQt6Qml.so.6
#14 0x00007fb2beea046d in QQmlBinding::doUpdate(QQmlJavaScriptExpression::DeleteWatcher const&, QFlags<QQmlPropertyData::WriteFlag>, QV4::Scope&) () from /lib/x86_64-linux-gnu/libQt6Qml.so.6
#15 0x00007fb2bee9d804 in QQmlBinding::update(QFlags<QQmlPropertyData::WriteFlag>) () from /lib/x86_64-linux-gnu/libQt6Qml.so.6
#16 0x00007fb2bef17457 in QQmlNotifier::emitNotify(QQmlNotifierEndpoint*, void**) () from /lib/x86_64-linux-gnu/libQt6Qml.so.6
#17 0x00007fb2bd3d5db0 in ?? () from /lib/x86_64-linux-gnu/libQt6Core.so.6
#18 0x00007fb2bff33ecd in KWin::Outline::hide() () from /lib/x86_64-linux-gnu/libkwin.so.6
#19 0x00007fb2c003ea60 in KWin::Window::finishInteractiveMoveResize(bool) () from /lib/x86_64-linux-gnu/libkwin.so.6
#20 0x00007fb2c003fcca in KWin::Window::endInteractiveMoveResize() () from /lib/x86_64-linux-gnu/libkwin.so.6
#21 0x00007fb2bfec201f in ?? () from /lib/x86_64-linux-gnu/libkwin.so.6
#22 0x00007fb2bff5c3df in KWin::PointerInputRedirection::processButton(unsigned int, KWin::InputRedirection::PointerButtonState, std::chrono::duration<long, std::ratio<1l, 1000000l> >, KWin::InputDevice*) () from /lib/x86_64-linux-gnu/libkwin.so.6
#23 0x00007fb2bd3d60af in ?? () from /lib/x86_64-linux-gnu/libQt6Core.so.6
#24 0x00007fb2bfe0d7f3 in KWin::InputDevice::pointerButtonChanged(unsigned int, KWin::InputRedirection::PointerButtonState, std::chrono::duration<long, std::ratio<1l, 1000000l> >, KWin::InputDevice*) () from /lib/x86_64-linux-gnu/libkwin.so.6
#25 0x00007fb2c01206d4 in KWin::LibInput::Connection::processEvents() () from /lib/x86_64-linux-gnu/libkwin.so.6
#26 0x00007fb2bd3c7ffb in QObject::event(QEvent*) () from /lib/x86_64-linux-gnu/libQt6Core.so.6
#27 0x00007fb2be5b2062 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /lib/x86_64-linux-gnu/libQt6Widgets.so.6
#28 0x00007fb2bd3879a8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /lib/x86_64-linux-gnu/libQt6Core.so.6
#29 0x00007fb2bd387c37 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () from /lib/x86_64-linux-gnu/libQt6Core.so.6
#30 0x00007fb2bd4d1985 in QEventDispatcherUNIX::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /lib/x86_64-linux-gnu/libQt6Core.so.6
#31 0x00007fb2bdf66651 in QUnixEventDispatcherQPA::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /lib/x86_64-linux-gnu/libQt6Gui.so.6
#32 0x00007fb2bd392b4b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /lib/x86_64-linux-gnu/libQt6Core.so.6
#33 0x00007fb2bd38a988 in QCoreApplication::exec() () from /lib/x86_64-linux-gnu/libQt6Core.so.6
#34 0x0000558baf79b501 in main (argc=<optimized out>, argv=<optimized out>) at ./src/main_wayland.cpp:634


I am having 2 4k Monitors with DP attached and a wacom tablet to write (it happns without it too)

This is a somehow really annoying crash, plasma 6 is not really usable in this computer for me rn. Thanks for looking into it ahead.
Comment 1 David Edmundson 2024-10-13 21:34:15 UTC
>#9  0x00007fb2bdc22a50 in QWindowSystemInterface::flushWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /lib/x86_64-linux-gnu/libQt6Gui.so.6

This is silly. We need to not call the base implementation in our QPA window, it does something questionable. Qt doesn't in the X11 or wayland backends.

We just need a sync call to     QWindowSystemInterface::handleExposeEvent(window(), rect); but one without the flush.
Comment 2 Moritz 2024-11-27 22:43:15 UTC
If I was fixing this myself, where would I start? Can you give me a tip? You said, it should not call the base implementaton, so simply remove the super call?