FreeRDP: Long term test - Freerdp disconnects with fastpath error

FreeRDP Master - Git Revision 24aa71e6cb547c02fbdf724258c3e3c0932ef0b9

All cmake Options: sudo cmake -DCMAKE_INSTALL_PREFIX=/opt/freerdp -DWITH_JPEG=ON -DWITH_THIRD_PARTY=ON -DBUILTIN_CHANNELS=OFF -DWITH_CUPS=ON -DWITH_PULSE=ON -DWITH_PCSC=ON -DWITH_CHANNELS=ON -DCHANNEL_SERIAL=ON \ -DCHANNEL_SMARTCARD=ON -DWITH_CLIENT_INTERFACE=ON -DWITH_XINERAMA=ON -DWITH_XEXT=ON -DWITH_XV=ON -DWITH_XI=ON -DWITH_XRENDER=ON -DWITH_SSE2=ON -DCHANNEL_PRINTER=ON -DCHANNEL_PRINTER_CLIENT=ON
-DCHANNEL_RDPDR=ON -DCHANNEL_DRIVE=ON -DCHANNEL_CLIPRDR=ON -DCHANNEL_URBDRC_CLIENT=ON -DCHANNEL_SMARTCARD_CLIENT=ON -DCHANNEL_URBDRC=ON -DWITH_WAYLAND=OFF -DWITH_FFMPEG=ON -DWITH_X11=ON
-DWITH_OPENH264=ON -DWITH_GSM=ON -DWITH_GSTREAMER_0_10=ON

Connection server -> Windows Server 2012 R2 Standard 64-Bit Client system -> Linux ubuntu-trusty-32 3.13.x

Command Line: /usr/bin/xfreerdp /u:“$USER” /p:“$PASS” /v:“$SERVER” /d:“$DOMAIN” /gdi:hw /f /multimon /bpp:24 /kbd:0x0404 +async-input +async-update +sec-rdp +sec-tls -sec-nla /rfx +grab-keyboard /smartcard +compression /network:lan +clipboard /cert-ignore

[12:02:57:719] [24952:24953] [WARN][com.freerdp.core.client] - Skipping, channel already loaded
[12:02:57:754] [24952:24953] [ERROR][com.winpr.timezone] - Unable to find a match for unix timezone: Etc/UTC
[19:31:42:196] [24952:24953] [ERROR][com.freerdp.core.fastpath] - FASTPATH_UPDATETYPE_SURFCMDS - update_recv_surfcmds() - -1
[19:31:42:206] [24952:24953] [ERROR][com.freerdp.core.fastpath] - fastpath_recv_update_data: fastpath_recv_update() - -1
[19:31:42:206] [24952:24953] [ERROR][com.freerdp.core.fastpath] - fastpath_recv_update_data() fail
[19:31:42:206] [24952:24953] [ERROR][com.freerdp.core.transport] - transport_check_fds: transport->ReceiveCallback() - -1
[19:31:42:206] [24952:24953] [ERROR][com.freerdp.core] - freerdp_check_fds() failed - 0
[19:31:42:207] [24952:24953] [ERROR][com.freerdp.client.x11] - Failed to check FreeRDP file descriptor
[19:31:42:212] [24952:25033] [WARN][com.freerdp.channels.smartcard.client] - IRP failure: SCardGetStatusChangeW (0x000900A4), status: SCARD_E_CANCELLED (0x80100002)
[19:31:42:212] [24952:25035] [WARN][com.freerdp.channels.smartcard.client] - IRP failure: SCardGetStatusChangeW (0x000900A4), status: SCARD_E_CANCELLED (0x80100002)
[19:31:42:212] [24952:24972] [ERROR][com.freerdp.channels.rdpdr.client] - VirtualChannelWrite failed with CHANNEL_RC_NOT_CONNECTED [00000004]
[19:31:42:212] [24952:24972] [ERROR][com.freerdp.channels.smartcard.client] - smartcard_complete_irp failed with error 4!
[19:31:42:215] [24952:24952] [ERROR][com.winpr.sync.mutex] - pthread_mutex_destroy failed with Device or resource busy [16]

What I have done is very simple -> Connect to the server with a smartcard reader connected and a smartcard inserted (did not intent to use it) -> Start Chrome and play cat videos for hours on youtube. It was just a test to see if it crashes in a longterm test. (7h 30min as it seems). There seem to be some errors in here but I guess the main problem is the fastpath error. I did try to use +compression /compression-level:1 or /max-fast-path-size:99999 but neither of them worked.

Edit 04.10.2016: Just tested with the current nightly build. Still not working.

About this issue

  • Original URL
  • State: closed
  • Created 8 years ago
  • Comments: 140 (102 by maintainers)

Most upvoted comments

@akallabeth Further testing:

For all if not changed (/gdi:hw -f -decorations /bpp:32 -sec-tls -async-input -async-update +grab-keyboard /network:lan +fonts +menu-anims +themes -clipboard)

All tests -> for 2 hours youtube video.

With +sec-nla /sound:sys:pulse,latency:50 -compression (without rfx) no problems.

With /rfx +async-update +sec-nla /sound:sys:pulse,latency:50 -compression:

[10:10:21:533] [27002:27003] [WARN][com.freerdp.core.client] - Skipping, channel already loaded
[10:36:20:725] [27002:27003] [ERROR][com.freerdp.core.fastpath] - FASTPATH_UPDATETYPE_SURFCMDS - update_recv_surfcmds() - -1
[10:36:20:725] [27002:27003] [ERROR][com.freerdp.core.fastpath] - fastpath_recv_update_data: fastpath_recv_update() - -1
[10:36:20:725] [27002:27003] [ERROR][com.freerdp.core.fastpath] - fastpath_recv_update_data() fail
[10:36:20:726] [27002:27003] [ERROR][com.freerdp.core.transport] - transport_check_fds: transport->ReceiveCallback() - -1
[10:36:20:726] [27002:27003] [ERROR][com.freerdp.core] - freerdp_check_fds() failed - 0
[10:36:20:726] [27002:27003] [ERROR][com.freerdp.client.x11] - Failed to check FreeRDP file descriptor
[10:36:21:916] [27002:27009] [ERROR][com.freerdp.channels.rdpsnd.client] - VirtualChannelWrite failed with CHANNEL_RC_NOT_CONNECTED [00000004]
[10:36:21:916] [27002:27009] [ERROR][com.freerdp.channels.rdpsnd.client] - error treating sound channel message

With /gfx +async-update +sec-nla /sound:sys:pulse,latency:50 -compression (instant disconnect when youtube video is running)

[10:45:42:458] [16401:16415] [WARN][com.freerdp.core.client] - Skipping, channel already loaded
[10:45:43:584] [16401:16437] [ERROR][com.freerdp.gdi] - clear_decompress failure: -1
[10:45:43:584] [16401:16437] [ERROR][com.freerdp.channels.rdpgfx.client] - context->SurfaceCommand failed with error 1359
[10:45:43:584] [16401:16437] [ERROR][com.freerdp.channels.rdpgfx.client] - rdpgfx_decode failed with error 1359!
[10:45:43:584] [16401:16437] [ERROR][com.freerdp.channels.rdpgfx.client] - rdpgfx_recv_wire_to_surface_1_pdu failed with error 1359!
[10:45:43:584] [16401:16437] [ERROR][com.freerdp.channels.rdpgfx.client] - Error while parsing GFX cmdId: RDPGFX_CMDID_WIRETOSURFACE_1 (0x0001)
[10:45:43:584] [16401:16437] [ERROR][com.freerdp.channels.rdpgfx.client] - rdpgfx_recv_pdu failed with error 1359!
[10:45:43:584] [16401:16437] [ERROR][com.freerdp.channels.drdynvc.client] - drdynvc_order_recv failed with error 1359!
[10:45:43:584] [16401:16415] [ERROR][com.freerdp.core] - drdynvc_virtual_channel_client_thread reported an error. Error was 1359
[10:45:43:585] [16401:16415] [ERROR][com.freerdp.client.x11] - Failed to check FreeRDP file descriptor

With /rfx +bitmap-cache /nsc +sec-nla /sound:sys:pulse,latency:50 -compression

[10:48:05:996] [18028:18029] [WARN][com.freerdp.core.client] - Skipping, channel already loaded
[10:54:48:878] [18028:18029] [ERROR][com.freerdp.core.fastpath] - FASTPATH_UPDATETYPE_SURFCMDS - update_recv_surfcmds() - -1
[10:54:48:879] [18028:18029] [ERROR][com.freerdp.core.fastpath] - fastpath_recv_update_data: fastpath_recv_update() - -1
[10:54:48:879] [18028:18029] [ERROR][com.freerdp.core.fastpath] - fastpath_recv_update_data() fail
[10:54:48:879] [18028:18029] [ERROR][com.freerdp.core.transport] - transport_check_fds: transport->ReceiveCallback() - -1
[10:54:48:879] [18028:18029] [ERROR][com.freerdp.core] - freerdp_check_fds() failed - 0
[10:54:48:879] [18028:18029] [ERROR][com.freerdp.client.x11] - Failed to check FreeRDP file descriptor

With /rfx /gdi:sw +sec-nla /sound:sys:pulse,latency:50 -compression

[11:16:02:997] [3329:3329] [INFO][com.freerdp.utils] - Registering signal hook...
[11:22:11:587] [3329:3330] [ERROR][com.freerdp.core.fastpath] - FASTPATH_UPDATETYPE_SURFCMDS - update_recv_surfcmds() - -1
[11:22:11:587] [3329:3330] [ERROR][com.freerdp.core.fastpath] - fastpath_recv_update_data: fastpath_recv_update() - -1
[11:22:11:587] [3329:3330] [ERROR][com.freerdp.core.fastpath] - fastpath_recv_update_data() fail
[11:22:11:587] [3329:3330] [ERROR][com.freerdp.core.transport] - transport_check_fds: transport->ReceiveCallback() - -1
[11:22:11:587] [3329:3330] [ERROR][com.freerdp.core] - freerdp_check_fds() failed - 0
[11:22:11:587] [3329:3330] [ERROR][com.freerdp.client.x11] - Failed to check FreeRDP file descriptor

@akallabeth with the new command line the session disconnected after one hour:

/opt/freerdp/bin/xfreerdp "/u:$USER" "/p:$PASSWD" "/d:$DOMAIN" /v:$CON_SERVER /gdi:hw -f -decorations /monitors:0 /bpp:32 /kbd:0x0407 /t:"Test" -async-input -async-update +sec-tls +sec-nla /rfx -bitmap-cache -grab-keyboard /sound:sys:pulse /audio-mode:0 /sound:latency:50 -compression /network:lan +fonts -aero -window-drag +menu-anims +themes -wallpaper +clipboard /cert-ignore

 [15:36:27:402] [12147:12148] [WARN][com.freerdp.core.client] - Skipping, channel already loaded
 [16:34:34:492] [12147:12148] [ERROR][com.freerdp.core.fastpath] - FASTPATH_UPDATETYPE_SURFCMDS - update_recv_surfcmds() - -1
 [16:34:34:493] [12147:12148] [ERROR][com.freerdp.core.fastpath] - fastpath_recv_update_data: fastpath_recv_update() - -1
 [16:34:34:493] [12147:12148] [ERROR][com.freerdp.core.fastpath] - fastpath_recv_update_data() fail
 [16:34:34:493] [12147:12148] [ERROR][com.freerdp.core.transport] - transport_check_fds: transport->ReceiveCallback() - -1
 [16:34:34:493] [12147:12148] [ERROR][com.freerdp.core] - freerdp_check_fds() failed - 0
 [16:34:34:493] [12147:12148] [ERROR][com.freerdp.client.x11] - Failed to check FreeRDP file descriptor
 [16:34:34:505] [12147:12157] [ERROR][com.freerdp.channels.rdpsnd.client] - VirtualChannelWrite failed with CHANNEL_RC_NOT_CONNECTED [00000004]
 [16:34:34:505] [12147:12157] [ERROR][com.freerdp.channels.rdpsnd.client] - error confirming wave

The things @soar and my command lines have in common are sound, rfx, gdi, fonts, themes, menu-anims, compression. My first command line had no sound, fonts, themes, menu-anims AND no sort of security other than the default sec-rdp…

I guess this is another problem, but with +sec-nla or +sec-tls my session sometimes crashes with

[08:10:38:124] [9119:9120] [ERROR][com.freerdp.core.transport] - BIO_read returned a system error 104: Connection reset by peer 
[08:10:38:124] [9119:9120] [ERROR][com.freerdp.core] - freerdp_check_fds() failed - 0 

As pointed out in #3454 it may be related to compression. Would be interesting, if the error vanishes if it is turned off.

@T3N4K4 The issue with input starvation should fixed with #3364

Yes, the sessions just ends itself. If I’ve been watching a video on youtube and would reconnect immediately the video would still be playing. There are no segfaults or any messages in dmesg.

The latest command line I’ve been using was: xfreerdp /u:$USER /p:$PASSWORD /d:windows /rfx /gdi:hw /bpp:32 +sec-tls -sec-nla +async-input +async-update /cert-ignore /v:$SERVER

The reason behind +async-input and +async-update is that the sessions tends to not respond or respond with a delay of up to 5 minutes when /rfx is set on graphic heavy content.

Server is 2012 R2 Standard Build 9600

As for the test case it is very easy -> Start freerdp with the command line above, watch youtube videos (for example 10h funny cat compilations) in fullscreen (browser fullscreen) in chrome (firefox seems to be crashing on my system after a while) and keep it running without moving the mouse or any other input. In my case the sessions kept running for 45 minutes up to 9 hours.