Hello Mike,
We have been testing again, and have not faced this issue again so far...
with the above line of code

- Palaash

On Sat, 7 Mar 2026 at 18:20, Palaash Jain <[email protected]>
wrote:

> Hi Mike,
> Thanks for your response, I will test with that fix and get back to you.
> Since we had noticed this during load testing, will update asap once we
> perform it again
>
> - Palaash
>
> On Sat, 7 Mar 2026 at 11:43, Michael Jumper <[email protected]> wrote:
>
>> On Friday, March 6, 2026 2:46:31 AM Pacific Standard Time Palaash Jain
>> wrote:
>> > Hi,
>> > I have built libguac on Windows using a MinGW pull request and a custom
>> > guacd that does this,
>> >
>> > a broker accepts socket connections,
>> > creates a child worker (1 for each connection),
>> > duplicates the socket and passes it via a pipe to the worker and then it
>> > loads libguac and starts handling the connection.
>> > (all of this on Windows)
>> >
>> > I am facing scenarios where the socket connection between the Guacamole
>> > Client and guacd (worker.exe) is closed but the worker.exe was kept
>> running
>> > in the background,
>> >
>> > at the function *PFW_LFR_guac_display_plan_create*
>> >
>> https://github.com/apache/guacamole-server/blob/772a65a3334f7ded6d43cbe5e2ed
>> > 347040a1fb52/src/libguac/display-plan.c#L157 (NOTE: This build is a
>> clone of
>> > guacamole server repo dated 22nd May, 2025 this file hasn't been updated
>> > since then, could be missing something else)
>> >
>> > Can there be a case where the buffers of the layers of display might
>> > already have been set to NULL and it enters this function because of
>> which,
>> > it will keep on looping after checking this if condition,
>> >
>> >         if (current->pending_frame.buffer == NULL) {
>> >             GUAC_ASSERT(current->pending_frame.buffer_is_external);
>> >             continue;
>> >         }
>> >
>> > I am not able to reproduce this consistently so any inputs on this will
>> be
>> > very helpful.
>> >
>>
>> That's definitely a bug - the current pointer needs to be advanced before
>> continuing. If you change the quoted block to:
>>
>>     if (current->pending_frame.buffer == NULL) {
>>         GUAC_ASSERT(current->pending_frame.buffer_is_external);
>>         current = current->pending_frame.next; /* <-- Add this line */
>>         continue;
>>     }
>>
>> does the issue go away?
>>
>> - Mike
>>
>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [email protected]
>> For additional commands, e-mail: [email protected]
>>
>>

Reply via email to