Modify ↓
Ticket #123 (closed defect: fixed)
stress test and memory "leaks"
| Reported by: | Matt Hortman <matt@…> | Owned by: | |
|---|---|---|---|
| Priority: | critical | Milestone: | Dumb Mud |
| Component: | libguac | Version: | unstable |
| Keywords: | Cc: | ||
| Points: |
Description
One of our stress tests is to show a youtube video inside the RDP session that guacamole is connected to. When I do this the memory usage of the tab hosting guacamole grows very rapidly (as reported by the Chrome Task Manager)and soon reaches 2 gig, causing that chrome tab to crash.
Attachments
Change History
comment:1 Changed 13 months ago by mike.jumper
- Status changed from new to assigned
- Component changed from guacamole-default-webapp to libguac-client-rdp
- Priority changed from major to critical
- Version set to unstable
- Milestone set to Alpha 3
- Owner set to mike.jumper
comment:2 Changed 13 months ago by mike.jumper
- Component changed from libguac-client-rdp to libguac
Actually a bug in buffer/layer free in libguac. Buffers and layers are not being readded to the available buffer pool.
comment:3 Changed 13 months ago by mike.jumper
- Owner mike.jumper deleted
- Status changed from assigned to please_test
Should be fixed by changeset:013dd23/libguac.
Note: See
TracTickets for help on using
tickets.

After checking with Chrome's heap profiler, practically all memory is used by the buffers array. Debugging allocation of buffers, I can see the RDP support is allocating a new buffer for essentially every graphical update, but then never freeing or reusing the buffer.
Modifying guacamole.js to give a readout of the number of buffers allocated in realtime and then watching a youtube video over RDP shows this number skyrocket until the tab runs out of memory and crashes.
Need to modify libguac-client-rdp to use buffers properly, perhaps not trusting the RDP protocol to determine whether a particular update should be cached.