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

            Bug ID: 486178
           Summary: VNC plugin deadlocks on connection
    Classification: Applications
           Product: krdc
           Version: 24.02.2
          Platform: Other
                OS: Linux
            Status: REPORTED
          Severity: normal
          Priority: NOR
         Component: VNC
          Assignee: uwol...@kde.org
          Reporter: thi...@kde.org
  Target Milestone: ---

SUMMARY
VNC plugin deadlocks as soon as you try to connect


STEPS TO REPRODUCE
1. Launch KRDC
2. Attempt to connect to a VNC host
3. Close KRDC

OBSERVED RESULT
KRDC freezes and must be killed

EXPECTED RESULT
KRDC closes. Preferably, the connection does establish.

SOFTWARE/OS VERSIONS
KDE Plasma Version: 6.0.3
KDE Frameworks Version: 6.1.0
Qt Version: 6.7.0

ADDITIONAL INFORMATION
Upon trying to connect, KRDC is still usable, but the debugger shows one thread
to be already frozen:
Thread 30 (Thread 0x7fffb4a006c0 (LWP 497638) "VncClientThread"):
#0  0x00007ffff5711bcd in syscall () at /lib64/libc.so.6
#1  0x00007ffff60dcca5 in QBasicMutex::lockInternal() () at
/lib64/glibc-hwcaps/x86-64-v4/libQt6Core.so.6.7.0
#2  0x00007fffe341886c in QBasicMutex::lock() (this=0x555555b37208) at
/usr/include/qt6/QtCore/qmutex.h:41
#3  QMutexLocker<QMutex>::relock() (this=<synthetic pointer>) at
/usr/include/qt6/QtCore/qmutex.h:257
#4  VncClientThread::run() (this=0x555555b37180) at
/usr/src/debug/krdc-24.02.2/vnc/vncclientthread.cpp:521
#5  0x00007ffff60dc1b8 in  () at
/lib64/glibc-hwcaps/x86-64-v4/libQt6Core.so.6.7.0
#6  0x00007ffff5692bb2 in start_thread () at /lib64/libc.so.6
#7  0x00007ffff571400c in clone3 () at /lib64/libc.so.6

    QMutexLocker locker(&mutex);

    while (!m_stopped) { // try to connect as long as the server allows
        locker.relock();
        m_passwordError = false;

This will NEVER EVER work because the mutex is locked by that locker and
nothing can unlock it. This is a difference in behaviour between Qt 5 and Qt 6.
Qt 5:
https://codebrowser.dev/qt5/qtbase/src/corelib/thread/qmutex.h.html#_ZN12QMutexLocker6relockEv
Qt 6:
https://codebrowser.dev/qt6/qtbase/src/corelib/thread/qmutex.h.html#_ZN12QMutexLocker6relockEv

The change happened in Qt 6.4, commit 1b1456975347b044c11169458b53c9f6083dbc59

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

Reply via email to