You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@guacamole.apache.org by "escra (Jira)" <ji...@apache.org> on 2026/04/14 23:18:00 UTC

[jira] [Created] (GUACAMOLE-2264) Dockerfile: Set CMAKE_BUILD_TYPE=Release for FreeRDP production builds

escra created GUACAMOLE-2264:
--------------------------------

             Summary: Dockerfile: Set CMAKE_BUILD_TYPE=Release for FreeRDP production builds
                 Key: GUACAMOLE-2264
                 URL: https://issues.apache.org/jira/browse/GUACAMOLE-2264
             Project: Guacamole
          Issue Type: Improvement
          Components: guacamole-server
            Reporter: escra
             Fix For: 1.6.1 [staging]


The official Dockerfile builds FreeRDP without specifying CMAKE_BUILD_TYPE. CMake defaults to an empty build type, which in FreeRDP's case enables WINPR_ASSERT runtime assertions (equivalent to WITH_VERBOSE_WINPR_ASSERT=ON).

When FreeRDP encounters any unexpected condition at runtime, WINPR_ASSERT calls abort(), which sends SIGABRT to the guacd child process. The child process terminates silently -- no error message is logged by guacd because the process is killed by the signal before it can log anything.

*Observable symptoms:*
FreeRDP logs this warning at connection startup:
{noformat}
*************************************************
This build is using [runtime-check] build options:
* 'WITH_VERBOSE_WINPR_ASSERT=ON'
*
[runtime-check] build options might slow down the application
*************************************************
{noformat}

Then, under certain conditions (e.g., unexpected server responses, edge cases in NLA negotiation), the child process disappears with no error logged.

*Impact:*
- Random, silent RDP connection failures
- No error diagnostics
- More likely with FreeRDP 3.x (significantly more assertions than 2.x)

*Fix:*
Add -DCMAKE_BUILD_TYPE=Release to FREERDP_OPTS in the Dockerfile. This disables WINPR_ASSERT, enables compiler optimizations, and follows standard practice for production builds. All Linux distribution packages of FreeRDP use Release builds.

*Risk:* Very low. CMAKE_BUILD_TYPE=Release is the standard CMake configuration for production builds.

PR: https://github.com/apache/guacamole-server/pull/660



--
This message was sent by Atlassian Jira
(v8.20.10#820010)