Bug 497766

Summary: krdc's main window feezes ("Window does not respond") until connection is established or has timed out on failure
Product: [Applications] krdc Reporter: postix <postix>
Component: RDPAssignee: Urs Wolfer <uwolfer>
Status: RESOLVED FIXED    
Severity: normal CC: ctrlaltca
Priority: NOR    
Version First Reported In: 24.12.0   
Target Milestone: ---   
Platform: Other   
OS: Linux   
Latest Commit: Version Fixed/Implemented In: 25.04
Sentry Crash Report:

Description postix 2024-12-21 21:24:18 UTC
STEPS TO REPRODUCE
1. Connect to a remote, which does not respond

OBSERVED RESULT
krdc freezes for a few seconds and its window becomes unresponsive (it even says so in the title)

journalctl log
```
krdc[83728]: KRDC: Starting RDP session

--- Window becomes unresponsive for a few seconds

krdc[83728]: [ERROR][com.freerdp.core] - freerdp_tcp_connect:freerdp_set_last_error_ex ERRCONNECT_CONNECT_FAILED [0x00020006]
krdc[83728]: [ERROR][com.freerdp.core] - failed to connect to $IP
krdc[83728]: KRDC: Unable to connect
```

EXPECTED RESULT
krdc stays responsive and shows a spinner or logs or whatever about the current state.


SOFTWARE/OS VERSIONS
Operating System: openSUSE Tumbleweed 20241218
KDE Plasma Version: 6.2.4
KDE Frameworks Version: 6.9.0
Qt Version: 6.8.1
Kernel Version: 6.11.8-1-default (64-bit)
Graphics Platform: Wayland
Comment 1 postix 2024-12-21 21:46:03 UTC
The associate gdb backtrace:

```
#8  0x00007fe6c4581fe8 in WaitForMultipleObjectsEx (nCount=nCount@entry=2, lpHandles=lpHandles@entry=0x7fffd6e7a680, bWaitAll=bWaitAll@entry=0, dwMilliseconds=dwMilliseconds@entry=15000, bAlertable=<optimized out>, bAlertable@entry=0)
    at /usr/src/debug/freerdp-2.11.7/winpr/libwinpr/synch/wait.c:426
#9  0x00007fe6c4582a48 in WaitForMultipleObjects (nCount=nCount@entry=2, lpHandles=lpHandles@entry=0x7fffd6e7a680, bWaitAll=bWaitAll@entry=0, dwMilliseconds=dwMilliseconds@entry=15000) at /usr/src/debug/freerdp-2.11.7/winpr/libwinpr/synch/wait.c:527
#10 0x00007fe6c46e17e2 in freerdp_tcp_connect_timeout (context=0x560a24d178c0, sockfd=88, addr=<optimized out>, addrlen=16, timeout=<optimized out>) at /usr/src/debug/freerdp-2.11.7/libfreerdp/core/tcp.c:844
#11 freerdp_tcp_connect (context=context@entry=0x560a24d178c0, settings=settings@entry=0x560a24d1a930, hostname=hostname@entry=0x560a245e44c0 "10.10.10.4", port=port@entry=3389, timeout=timeout@entry=15000) at /usr/src/debug/freerdp-2.11.7/libfreerdp/core/tcp.c:1158
#12 0x00007fe6c46e5862 in transport_connect (transport=0x560a24d130b0, hostname=0x560a245e44c0 "10.10.10.4", port=3389, timeout=15000) at /usr/src/debug/freerdp-2.11.7/libfreerdp/core/transport.c:424
#13 0x00007fe6c46af005 in nego_tcp_connect (nego=0x560a245a4100) at /usr/src/debug/freerdp-2.11.7/libfreerdp/core/nego.c:305
#14 0x00007fe6c46d2b92 in nego_transport_connect (nego=0x560a245a4100) at /usr/src/debug/freerdp-2.11.7/libfreerdp/core/nego.c:321
#15 nego_attempt_nla (nego=0x560a245a4100) at /usr/src/debug/freerdp-2.11.7/libfreerdp/core/nego.c:461
#16 nego_send (nego=0x560a245a4100) at /usr/src/debug/freerdp-2.11.7/libfreerdp/core/nego.c:834
#17 nego_connect (nego=0x560a245a4100) at /usr/src/debug/freerdp-2.11.7/libfreerdp/core/nego.c:185
#18 rdp_client_connect (rdp=0x560a24d17ce0) at /usr/src/debug/freerdp-2.11.7/libfreerdp/core/connection.c:336
#19 0x00007fe6c46c9539 in freerdp_connect (instance=0x560a24d16480) at /usr/src/debug/freerdp-2.11.7/libfreerdp/core/freerdp.c:203
#20 0x00007fe6d7f568ee in RdpSession::start (this=<optimized out>) at /usr/src/debug/krdc-24.12.0/rdp/rdpsession.cpp:504
#21 RdpView::start (this=<optimized out>) at /usr/src/debug/krdc-24.12.0/rdp/rdpview.cpp:154
```