Hi Armin,

Thank you for your reply.
I am talking about copying a file via a shared drive.

Meanwhile we have seen that FreeRDP 2.0.0 was using Stream_Free() to free
the wStream that was initially passed to FreeRDP_VirtualChannelWriteEx,
while 2.2.0 uses Stream_Release.
It is most likely that the current implementation in Guacamole server is
still aligned for the 2.0.0 way.
If we are copying a large file (several GB) then memory can run out during
the copy operation itself, so only releasing the buffers after the file is
finished copying does not cover us. Or maybe I misunderstood the usage you
propose for CHANNEL_EVENT_WRITE_COMPLETE ?

Thanks!
Jonatan


---------- Forwarded message ---------
From: Armin Novak via FreeRDP-devel <freerdp-devel@lists.sourceforge.net>
Date: Tue, Sep 1, 2020 at 10:27 AM
Subject: Re: [FreeRDP-devel] Memory not being freed during file copy via an
RDP session
To: <freerdp-devel@lists.sourceforge.net>


Hi,


could you please clarify a bit?

Are you talking about using a shared drive or clipboard file copy?


As for FreeRDP_VirtualChannelWriteEx, you need to listen for
CHANNEL_EVENT_WRITE_COMPLETE and free any buffer supplied before there.
(see any of the channels like clipboard using that)


regards

Armin

On 31.08.20 23:09, Jonatan Volkov via FreeRDP-devel wrote:
> Hi all,
>
> I am trying to hunt down an issue where during an RDP session via Apache
> Gaucamole, copying a file from a shared directory/drive to any location on
> the RDP server reserves memory that never gets freed. This leak eventually
> brings down the guac session process after ~3GB have been copied in such a
> way (on a weak machine).
> We are getting this with Guacamole 1.2.0 (over FreeRDP 2.2.0) - was not
> happening with Guacamole 1.0.0 (over FreeRDP 1.1).
>
> Using valgrind we have tracked the problem to the repeated calls to
> FreeRDP_VirtualChannelWriteEx containing chunks of the copied file. The
> arguments include a wStream object that was earlier created via
Stream_New.
> It appears, and the valgrind trace supports it, that this wStream instance
> never gets freed by FreeRDP.
>
> I could not find an open issue or discussions on it. Has anyone
encountered
> this problem, or in general has any idea regarding the root cause of this
> leak?
> Should we be using the StreamPool from the external code (Guacamole in
> fact) rather than creating a new instance of the stream for each write
> operation?
>
> Thanks! Regards,
> Jonatan
>
> _______________________________________________
> FreeRDP-devel mailing list
> FreeRDP-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/freerdp-devel


_______________________________________________
FreeRDP-devel mailing list
FreeRDP-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freerdp-devel

_______________________________________________
FreeRDP-devel mailing list
FreeRDP-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freerdp-devel

Reply via email to