MacOS 14.4 - RDM 2023.3.13.4 - RDP Session Freezes RDM

Implemented

MacOS 14.4 - RDM 2023.3.13.4 - RDP Session Freezes RDM

avatar

Recently I started getting errors in RDM. I don't know for sure what the instigator is here, but I started noticing problems an then tried to upgrade to the latest version of RDM and then the latest version MacOS (started at 14.1 and recently moved to 14.4).

When RDM launches, everything starts out fine. I can laugh ssh shell sessions without problem. Once I launch the RDP Sessions, it loads the screen and I see the desktop, then the spinning wheel of deal prevents me from selecting anything in RDM and I have to force it to close.

For a time, I was able to change to OpenGL and it would crash RDM frequently but I could still do some work in the application. I've also tried changing to the legacy engine which causes the entire OS to crash and reboot the machine.

The error message I get a the start of RDM after just RDM crashes is below: (using metal and NOT legacy engine)

2024-03-15 16:27:41.181 RemoteDesktopManager[74762:2397227] [CAMetalLayerDrawable texture] should not be called after already presenting this drawable. Get a nextDrawable instead.

I'm not sure if there is enough information to help here. I unfortunately do not recall the previous version of RDM I was on when it was working without error.

All Comments (3)

avatar

Hello David,

Thank you for reaching out to us regarding this,

Could you confirm if the option "Use Unified Memory" is enabled? You can find it by going to File > Settings and selecting Types > Remote Desktop. Then, scroll down to Rendering Engine and uncheck the box for Use Unified Memory.

Let me know if the problem persists after disabling this,

Best regards,

Samuel Dery

avatar

Disabling the unified memory seems to have resolved it, thanks!

avatar

Hello

I'm glad that Samuel's suggestion seems to have resolved the issue for you. I wanted to add a little explanation.

RDM Mac, by default, runs RDP sessions in a separate process (a sandbox) to prevent crashes or instability in the RDP component from crashing the whole application. One thing that is challenging to get right in this mode is the fact that RDM and the sandbox must access a shared section of memory; the memory must be careful synchronized to prevent state corruption and that is non-straightforward across processes. Over time we've accumulated many crash reports related to that.

"Use unified memory" uses a different model, it uses macOS intrinsics to share a screen buffer between processes instead of POSIX shared memory. Overall, if you weren't experiencing issues without "Use unified memory", there's no reason to enable it. It does have different performance characteristics (performance is faster / better but at the cost of increased memory usage).

Back to your original problem - there was a bug in our rendering code when using this option that failed to release some resources back to the OS in a timely fashion. This lay dormant for a long time because it never actually caused a problem, however with the latest updates and releases there was a change in either Apple's Metal SDK or in the .NET interface to that SDK that meant this bug now causes a freeze. I wanted to let you know that this bug has already been fixed for an upcoming release.

Please, if something isn't clear or you have further questions please don't hesitate to post back

Kind regards,

Richard Markievicz