Embedded GTK widgets never get a surface (SSH terminal, web view), RDP stalls after gdi_init_ex — RDM 2026.3.0.5 Linux binaries
Hi,
I ran the official Linux build of RDM on FreeBSD's Linux compatibility layer (Linuxulator) and got surprisingly far, but hit two issues that look like they are on the RDM side rather than the platform side. I am not asking for FreeBSD support, and I understand this is an unsupported configuration. I am posting because the findings isolate the failure fairly precisely and might be useful to you, and because a few of them would improve the packaging on lean Linux installs as well.
Environment
What works
The application itself runs well. Full Avalonia UI, fonts, dialogs, settings, session history, all responsive. More importantly:
So the .NET runtime, Avalonia, Skia, the VNC stack and the FreeRDP stack are all functional here.
Issue 1: embedded GTK widgets get a window but never a usable surface
This affects both the SSH terminal (VTE) and the web view (WebKitGTK). The X window tree during an open web session:
0x20000e "Remote Desktop Manager" 1024x768+10+10 (Avalonia toplevel)
└─ 0x200017 676x661+339+73 (session area)
└─ 0xc0002a "RemoteDesktopManager" 676x661+0+0 (GTK window, correctly reparented)
└─ 0xc0002b 1x1+-1+-1 (content, never allocated)
The GTK window is embedded at the right size, but its child stays at 1x1. Accompanying messages on stderr:
(RemoteDesktopManager:11387): Gdk-CRITICAL **: gdk_window_move_resize_internal:
assertion 'GDK_IS_WINDOW (window)' failed
(RemoteDesktopManager:13951): Gtk-CRITICAL **: gtk_widget_get_parent:
assertion 'GTK_IS_WIDGET (widget)' failed
(RemoteDesktopManager:13951): GLib-GObject-CRITICAL **: g_object_remove_toggle_ref:
assertion 'G_IS_OBJECT (object)' failed
Consequences:
Things I ruled out, in this order:
Issue 2: RDP session stalls right after gdi_init_ex
With WLOG_LEVEL=DEBUG, the connection completes and then stops. Last lines:
[INFO][com.freerdp.gdi] - [gdi_init_ex]: Local framebuffer format PIXEL_FORMAT_BGRX32
[INFO][com.freerdp.gdi] - [gdi_init_ex]: Remote framebuffer format PIXEL_FORMAT_BGRA32
[DEBUG][Devolutions.Rdp] - [_OnChannelConnected]: OnChannelConnected (rdpdr)
[INFO][com.freerdp.channels.rdpsnd.client] - [rdpsnd_load_device_plugin]: [static] Loaded alsa backend
[DEBUG][Devolutions.Rdp] - [_OnChannelConnected]: OnChannelConnected (rdpsnd)
[DEBUG][Devolutions.Rdp] - [_OnChannelConnected]: OnChannelConnected (cliprdr)
[INFO][com.freerdp.channels.drdynvc.client] - [dvcman_load_addin]: Loading DVC nowproto
[INFO][com.freerdp.channels.drdynvc.client] - [dvcman_load_addin]: Loading DVC ainput
[WARN][com.winpr.thread] - [SetThreadPriority]: pthread_setschedprio(0) not implemented
Nothing after that, even at WLOG_LEVEL=TRACE. The UI keeps showing "Connecting to 127.0.0.1:3389", and the socket confirms the client stopped reading:
tcp4 839 0 127.0.0.1.24404 127.0.0.1.3389 ESTABLISHED
839 bytes sit unread in the receive queue indefinitely, which are presumably the server's finalization PDUs. The pthread_setschedprio warning is a compile time fallback in WinPR, not the cause. I confirmed that by shimming the symbol via LD_PRELOAD, which changes nothing.
Packaging observations that apply to Linux generally
Questions
Happy to run further tests, gather traces or try patched builds. The setup is a throwaway VM, so I can break it freely.
Thanks.
Hello,
Thank you for the very detailed report. We’ve shared your findings and questions with our development team for further investigation.
Regarding the SSH terminal and web view issue, this appears to be related to an area of the Linux client that is currently being actively reworked. If possible, could you please check whether the same behavior occurs on a standard Rocky Linux 9 or Ubuntu VM using the same setup?
For the RDP stall, could you also test the same xrdp server using xfreerdp from the same environment? This will help us determine whether the issue originates from FreeRDP itself or from Remote Desktop Manager.
Regarding libusb, it is only used for webcam redirection. However, the RDP library currently requires it in order to load, so please consider it a required dependency for now.
We’ll keep you updated as soon as we receive further feedback from our development team.
Best regards,
Carl Marien