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

            Bug ID: 469497
           Summary: Kwin freezes when I try to quickly switch windows
                    twice
    Classification: Plasma
           Product: kwin
           Version: 5.26.90
          Platform: Debian testing
                OS: Linux
            Status: REPORTED
          Severity: normal
          Priority: NOR
         Component: core
          Assignee: kwin-bugs-n...@kde.org
          Reporter: jpale...@web.de
  Target Milestone: ---

SUMMARY

Sometimes when I press Alt-Tab twice quickly in succession kwin, and therefore
all desktop freezes. This is recoverable by killing kwin.

The backtrace when the freeze happened is:

#0  __futex_abstimed_wait_common64 (private=0, cancel=true, abstime=0x0,
op=393, expected=0, futex_word=0x55a42bee68d4) at ./nptl/futex-internal.c:57
#1  __futex_abstimed_wait_common (futex_word=futex_word@entry=0x55a42bee68d4,
expected=expected@entry=0, clockid=clockid@entry=0, abstime=abstime@entry=0x0,
private=private@entry=0, cancel=cancel@entry=true) at
./nptl/futex-internal.c:87
#2  0x00007fe643aa4d9b in __GI___futex_abstimed_wait_cancelable64
(futex_word=futex_word@entry=0x55a42bee68d4, expected=expected@entry=0,
clockid=clockid@entry=0, abstime=abstime@entry=0x0, private=private@entry=0) at
./nptl/futex-internal.c:139
#3  0x00007fe643aa73f8 in __pthread_cond_wait_common (abstime=0x0, clockid=0,
mutex=0x55a42bee6880, cond=0x55a42bee68a8) at ./nptl/pthread_cond_wait.c:503
#4  ___pthread_cond_wait (cond=0x55a42bee68a8, mutex=0x55a42bee6880) at
./nptl/pthread_cond_wait.c:618
#5  0x00007fe6448d1a2b in QWaitConditionPrivate::wait(QDeadlineTimer)
(deadline=..., this=0x55a42bee6880) at thread/qwaitcondition_unix.cpp:146
#6  QWaitCondition::wait(QMutex*, QDeadlineTimer) (this=<optimized out>,
mutex=0x55a42bf61078, deadline=...) at thread/qwaitcondition_unix.cpp:225
#7  0x00007fe64620bd58 in
QSGThreadedRenderLoop::polishAndSync(QSGThreadedRenderLoop::Window*, bool)
(this=0x55a42b174710, w=0x55a42be30f80, inExpose=<optimized out>) at
scenegraph/qsgthreadedrenderloop.cpp:1603
#8  0x00007fe646276e20 in QQuickWindow::event(QEvent*) (this=0x55a42beda340,
e=0x7ffd9db8e490) at items/qquickwindow.cpp:1863
#9  0x00007fe644162fae in QApplicationPrivate::notify_helper(QObject*, QEvent*)
(this=<optimized out>, receiver=0x55a42beda340, e=0x7ffd9db8e490) at
kernel/qapplication.cpp:3640
#10 0x00007fe644ab16f8 in QCoreApplication::notifyInternal2(QObject*, QEvent*)
(receiver=0x55a42beda340, event=0x7ffd9db8e490) at
kernel/qcoreapplication.cpp:1064
#11 0x00007fe644ab18be in QCoreApplication::sendEvent(QObject*, QEvent*)
(receiver=<optimized out>, event=<optimized out>) at
kernel/qcoreapplication.cpp:1462
#12 0x00007fe644f2c4b3 in QPlatformWindow::deliverUpdateRequest()
(this=<optimized out>) at kernel/qplatformwindow.cpp:796
#13 QPlatformWindow::windowEvent(QEvent*) (this=<optimized out>,
event=<optimized out>) at kernel/qplatformwindow.cpp:476
#14 0x00007fe64416a1f9 in QApplication::notify(QObject*, QEvent*)
(this=0x7ffd9db8ea10, receiver=0x55a42beda340, e=0x7ffd9db8e6f0) at
kernel/qapplication.cpp:2882
#15 0x00007fe644ab16f8 in QCoreApplication::notifyInternal2(QObject*, QEvent*)
(receiver=0x55a42beda340, event=0x7ffd9db8e6f0) at
kernel/qcoreapplication.cpp:1064
#16 0x00007fe644ab18be in QCoreApplication::sendEvent(QObject*, QEvent*)
(receiver=<optimized out>, event=<optimized out>) at
kernel/qcoreapplication.cpp:1462
#17 0x00007fe644b08c31 in QTimerInfoList::activateTimers()
(this=0x55a42a60fa60) at kernel/qtimerinfo_unix.cpp:643
#18 0x00007fe644b094c4 in timerSourceDispatch(GSource*, GSourceFunc, gpointer)
(source=<optimized out>) at kernel/qeventdispatcher_glib.cpp:183
#19 0x00007fe6428627a9 in g_main_context_dispatch () at
/lib/x86_64-linux-gnu/libglib-2.0.so.0
#20 0x00007fe642862a38 in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#21 0x00007fe642862acc in g_main_context_iteration () at
/lib/x86_64-linux-gnu/libglib-2.0.so.0

This indicates IMHO that the problem is in QSGThreadedRenderLoop, because it is
waiting on a condition variable it uses to wait for processing of the
individual events. However, I'm not quite sure what to do about it.


SOFTWARE/OS VERSIONS
Linux/KDE Plasma:
(available in About System)
KDE Plasma Version: 5.27.2
KDE Frameworks Version: 5.103.0
Qt Version: 5.15.8

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

Reply via email to