Skip to content

GUACAMOLE-2221: fix RDP busy-loop on transport failure#635

Open
pwgcz wants to merge 1 commit intoapache:mainfrom
pwgcz:GUACAMOLE-2118-fix-RDP-busy-loop-on-transport-failure
Open

GUACAMOLE-2221: fix RDP busy-loop on transport failure#635
pwgcz wants to merge 1 commit intoapache:mainfrom
pwgcz:GUACAMOLE-2118-fix-RDP-busy-loop-on-transport-failure

Conversation

@pwgcz
Copy link

@pwgcz pwgcz commented Feb 16, 2026

When an RDP connection hits a transport-level
failure (for example, a certificate error), the
inner event loop in rdp.c can spin at 100% CPU.

This happens because the error state in
wait_result gets overwritten. When the issue
occurs, guac_rdp_handle_events() sets wait_result
to -1, but the loop doesn’t exit immediately. In
the next iteration, the while condition assigns
wait_result from rdp_guac_client_wait_for_events()
effectively clearing the error flag. As a result,
the loop never observes the transport failure and
continues polling, spinning the CPU.

Fix: break out of the loop immediately after
guac_rdp_handle_events() fails, so we stop
processing when FreeRDP reports a connection
error.

When an RDP connection hits a transport-level
failure (for example, a certificate error), the
inner event loop in rdp.c can spin at 100% CPU.

This happens because the error state in
wait_result gets overwritten. When the issue
occurs, guac_rdp_handle_events() sets wait_result
to -1, but the loop doesn’t exit immediately. In
the next iteration, the while condition assigns
wait_result from rdp_guac_client_wait_for_events()
effectively clearing the error flag. As a result,
the loop never observes the transport failure and
continues polling, spinning the CPU.

Fix: break out of the loop immediately after
guac_rdp_handle_events() fails, so we stop
processing when FreeRDP reports a connection
error.
@pwgcz pwgcz changed the title GUACAMOLE-2118: fix RDP busy-loop on transport failure GUACAMOLE-2221: fix RDP busy-loop on transport failure Feb 17, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant