Bug 50914 - Memory leak freerdp (Утечка памяти в freerdp)
Summary: Memory leak freerdp (Утечка памяти в freerdp)
Status: CLOSED WORKSFORME
Alias: None
Product: Branch p10
Classification: Unclassified
Component: freerdp (show other bugs)
Version: не указана
Hardware: x86_64 Linux
: P5 normal
Assignee: qa-team@altlinux.org
QA Contact: qa-p10@altlinux.org
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2024-07-16 09:24 MSK by JcVai
Modified: 2024-10-10 10:11 MSK (History)
1 user (show)

See Also:


Attachments
Скриншот потребления памяти krdc после 8 часов работы с двумя сеансами (11.32 KB, image/png)
2024-07-16 09:24 MSK, JcVai
no flags Details
Потребление памяти двумя rdp-клиентами, запущенными из kde konsole (31.63 KB, application/zip)
2024-07-18 06:52 MSK, JcVai
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description JcVai 2024-07-16 09:24:14 MSK
Created attachment 16428 [details]
Скриншот потребления памяти krdc после 8 часов работы с двумя сеансами

База freerdp в стабильном p10.3 приводит к утечкам памяти.
В настоящий момент используются
freerdp-2.11.7-alt2.x86_64
libfreerdp-2.11.7-alt2.x86_64
xfreerdp-2.11.7-alt2.x86_64
wlfreerdp-2.11.7-alt2.x86_64
на 6.1.96-un-def-alt1

Проверял через freerdp, krdc, xfreerdp и wlfreerdp. С разными параметрами, например "2>/dev/null 1>/dev/null /usr/bin/wlfreerdp /audio-mode:2 +auto-reconnect /cert-ignore -clipboard -decorations -fast-path -fonts -heartbeat /w:1000 /h:800 /v:10.16.100.63 /u:video /p:video &"
Запускал из консолей или через gui Alt App Starter
Ничего не меняется.

Симптомы: на старте клиент rdp-подключения ест около 30Мб оперативной памяти, через пол-часа уже около 50мб, к вечеру под пол-гигабайта минимум.
Если сеанс долго не перезапускать - получалось довести до потребления 12Гб ОЗУ одним rdp-клиентом...
При этом по сеансам не пробрасываются тяжелые данные (буфер обмена, звук, подключение дисков и тп не используются) - только "картинка" в одну сторону и "клавомышь" в другую.

Есть подозрение, что утечка идет на где-то на уровне кэширования изображений
(В частности, пока набивал этот тикет, потребление оперативной памяти свежезапущенным сеансом с цветной картинкой выросло с 27мб до 100мб, в то время, как потребление сеанса в градациях серого выросло с 27мб до 70мб)
Comment 1 Фомченков Семен 2024-07-17 19:55:37 MSK
(Ответ для JcVai на комментарий #0)
> Создано вложение 16428 [details] [подробности]
> Скриншот потребления памяти krdc после 8 часов работы с двумя сеансами
> 
> База freerdp в стабильном p10.3 приводит к утечкам памяти.
> В настоящий момент используются
> freerdp-2.11.7-alt2.x86_64
> libfreerdp-2.11.7-alt2.x86_64
> xfreerdp-2.11.7-alt2.x86_64
> wlfreerdp-2.11.7-alt2.x86_64
> на 6.1.96-un-def-alt1
> 
> Проверял через freerdp, krdc, xfreerdp и wlfreerdp. С разными параметрами,
> например "2>/dev/null 1>/dev/null /usr/bin/wlfreerdp /audio-mode:2
> +auto-reconnect /cert-ignore -clipboard -decorations -fast-path -fonts
> -heartbeat /w:1000 /h:800 /v:10.16.100.63 /u:video /p:video &"
> Запускал из консолей или через gui Alt App Starter
> Ничего не меняется.
> 
> Симптомы: на старте клиент rdp-подключения ест около 30Мб оперативной
> памяти, через пол-часа уже около 50мб, к вечеру под пол-гигабайта минимум.
> Если сеанс долго не перезапускать - получалось довести до потребления 12Гб
> ОЗУ одним rdp-клиентом...
> При этом по сеансам не пробрасываются тяжелые данные (буфер обмена, звук,
> подключение дисков и тп не используются) - только "картинка" в одну сторону
> и "клавомышь" в другую.
> 
> Есть подозрение, что утечка идет на где-то на уровне кэширования изображений
> (В частности, пока набивал этот тикет, потребление оперативной памяти
> свежезапущенным сеансом с цветной картинкой выросло с 27мб до 100мб, в то
> время, как потребление сеанса в градациях серого выросло с 27мб до 70мб)

Здравствуйте.

Попытался воспроизвести ошибку по вашему описанию. Спустя 24 часа подключения по rdb утечки памяти не заметил. В качестве клиента и сервера использовались системы на базе K Workstation 10.3 с обновлением до актуального состояния репозитория на 16.07.2024. Проверял с использованием xfreerdp и KRDC как клиентов. Потребление оперативной памяти не вышло за пределы 100-120мб на протяжении всего времени.

Пожалуйста, можете описать процесс воспроизведения ошибки по шагам, возможно наши действия где-то отличаются.
Comment 2 JcVai 2024-07-18 06:49:08 MSK
Доброго времени суток, Семен.
Локальной системой Workstation 10.3 K, KDE с предпочтением Wayland, удаленной системой используются windows 7 и windows 10: в оконном режиме rdp-клиентов полноэкранное видеонаблюдение (локально окно, удаленно полный экран). Параметры подключения либо "по-умолчанию", либо "audio-mode:2 +auto-reconnect /cert-ignore -clipboard -decorations -fast-path -fonts -heartbeat /w:1000 /h:800 /v:<адрес сервера> /u:<имя пользователя> /p:<пароль>
Как вариант для теста, можно убедиться, что свободной оперативной достаточно (возможно отъедается пока свободна) и запустить на удаленном сеансе меняющийся видеопоток, например онлайн-тв канал какой-нибудь (чтоб не было статичной картинки). Ибо при работе в удаленных сеансах (редко меняющиеся окна обычного рабочего процесса), явной выраженности подобного не замечал (хотя и не оставлял их на длительный срок). Еще, как вариант, может быть проблема при отображении не на основном мониторе (многомониторное рабочее место)

Сейчас приложу скриншоты системного монитора, где запущенные два сеанса из консоли со вчерашнего утра (т.е. за сутки) съели за три гигабайта.
Comment 3 JcVai 2024-07-18 06:52:44 MSK
Created attachment 16448 [details]
Потребление памяти двумя rdp-клиентами, запущенными из kde konsole

with rdp - после суток работы двух rdp-клиентов
without rdp - после завершения rdp-сеансов
with restarted rdp - посла запуска новых сеансов
Comment 4 Фомченков Семен 2024-07-24 21:57:48 MSK
Ошибку воспроизвести не удалось. При сеccии RDP между Windows 10 Pro(сервер) и KWorkstation(клиент) за 8 часов с потоковым полноэкранным видео рост потребления оперативной памяти составил 1.1 МБ.
Comment 5 JcVai 2024-07-25 20:15:47 MSK
Ясно, значит "проблема плавающая", может зависеть и от amd-драйвера, от настроек рабочего стола... вплоть до использования многомониторной системы (у меня dvr на 4-й монитор по rdp идет).
Из схожего в сети нашел только старые проблемы утечки памяти (supplied realloc pointer is also used for a realloc return value), которые должны уже быть исправлены в актуальной версии, и проблемы взаимодействия freerdp с видеодрайвером под wayland при использовании увеличения/масштабирования рабочего стола.
Вероятно придется делать ежедневный перезапуск, пока не появится время/настроение сделать дампы процесса при запуске и после значительного роста и сравнить, попробовав определить состав мусорных данных. 

Пока что из выявленного для запущенного с утра и съевшего под 1.9Гб процесса
-- данные из smaps процесса -- 
Size:            1572868 kB
KernelPageSize:        4 kB
MMUPageSize:           4 kB
Rss:              954392 kB
Pss:              954392 kB
Pss_Dirty:        954392 kB
Shared_Clean:          0 kB
Shared_Dirty:          0 kB
Private_Clean:         0 kB
Private_Dirty:    954392 kB
Referenced:       953832 kB
Anonymous:        954392 kB
LazyFree:              0 kB
AnonHugePages:    167936 kB
ShmemPmdMapped:        0 kB
FilePmdMapped:         0 kB
Shared_Hugetlb:        0 kB
Private_Hugetlb:       0 kB
Swap:                  0 kB
SwapPss:               0 kB
Locked:                0 kB
THPeligible:    1
VmFlags: rd wr mr mw me ac
--

-- данные из pmap для него же--
0007fcbdaffa000 1572868K rw---   [ anon ]
--

-- данные из valgrind для свежего запуска минут на 5 (завтра подольше подержу) --
==702882== 
==702882== Warning: ignored attempt to set SIGKILL handler in sigaction();
==702882==          the SIGKILL signal is uncatchable
==702882== Warning: ignored attempt to set SIGSTOP handler in sigaction();
==702882==          the SIGSTOP signal is uncatchable
[20:02:11:278] [702882:702882] [ERROR][com.winpr.timezone] - Unable to get current timezone rule
[20:02:11:562] [702882:702882] [INFO][com.freerdp.gdi] - Local framebuffer format  PIXEL_FORMAT_BGRA32
[20:02:11:565] [702882:702882] [INFO][com.freerdp.gdi] - Remote framebuffer format PIXEL_FORMAT_RGB16
[20:02:12:941] [702882:702882] [INFO][com.freerdp.channels.rdpsnd.client] - [static] Loaded fake backend for rdpsnd
[20:02:12:942] [702882:702882] [INFO][com.freerdp.channels.drdynvc.client] - Loading Dynamic Virtual Channel geometry
[20:02:12:952] [702882:702882] [INFO][com.freerdp.channels.drdynvc.client] - Loading Dynamic Virtual Channel video
[20:02:12:301] [702882:702894] [ERROR][com.freerdp.channels.rdpdr.client] - channel [RDPDR] received PAKID_CORE_CLIENTID_CONFIRM, expected states [RDPDR_CHANNEL_STATE_CLIENT_CAPS|RDPDR_CHANNEL_STATE_READY|RDPDR_CHANNEL_STATE_USER_LOGGEDON] but have state RDPDR_CHANNEL_STATE_NAME_REQUEST, aborting.
[20:02:12:302] [702882:702894] [ERROR][com.freerdp.channels.rdpdr.client] - channel [RDPDR] received PAKID_CORE_SERVER_CAPABILITY, expected states [RDPDR_CHANNEL_STATE_NAME_REQUEST|RDPDR_CHANNEL_STATE_SERVER_CAPS|RDPDR_CHANNEL_STATE_READY|RDPDR_CHANNEL_STATE_CLIENT_CAPS|RDPDR_CHANNEL_STATE_UNKNOWN|RDPDR_CHANNEL_STATE_UNKNOWN] but have state RDPDR_CHANNEL_STATE_INITIAL, aborting.
==702882== Invalid read of size 1
==702882==    at 0x4DEAF5D: wl_proxy_add_listener (in /usr/lib64/libwayland-client.so.0.22.0)
==702882==    by 0x48EF919: ??? (in /usr/lib64/libuwac0.so.0.2.0)
==702882==    by 0x10D3E0: ??? (in /usr/bin/wlfreerdp)
==702882==    by 0x49AAB38: ??? (in /usr/lib64/libfreerdp2.so.2.11.7)
==702882==    by 0x4999183: ??? (in /usr/lib64/libfreerdp2.so.2.11.7)
==702882==    by 0x4999CAE: ??? (in /usr/lib64/libfreerdp2.so.2.11.7)
==702882==    by 0x499A3DA: ??? (in /usr/lib64/libfreerdp2.so.2.11.7)
==702882==    by 0x49A4BEB: ??? (in /usr/lib64/libfreerdp2.so.2.11.7)
==702882==    by 0x499AE02: ??? (in /usr/lib64/libfreerdp2.so.2.11.7)
==702882==    by 0x4981FCE: freerdp_check_fds (in /usr/lib64/libfreerdp2.so.2.11.7)
==702882==    by 0x4983082: freerdp_check_event_handles (in /usr/lib64/libfreerdp2.so.2.11.7)
==702882==    by 0x10B95D: ??? (in /usr/bin/wlfreerdp)
==702882==  Address 0x11d09328 is 40 bytes inside a block of size 96 free'd
==702882==    at 0x483EF4C: free (vg_replace_malloc.c:755)
==702882==    by 0x4DEA943: ??? (in /usr/lib64/libwayland-client.so.0.22.0)
==702882==    by 0x4DEC58B: wl_display_dispatch_queue_pending (in /usr/lib64/libwayland-client.so.0.22.0)
==702882==    by 0x48ED79B: ??? (in /usr/lib64/libuwac0.so.0.2.0)
==702882==    by 0x48EE3EE: UwacDisplayDispatch (in /usr/lib64/libuwac0.so.0.2.0)
==702882==    by 0x10B842: ??? (in /usr/bin/wlfreerdp)
==702882==    by 0x4C0FEFC: (below main) (in /lib64/libc-2.32.so)
==702882==  Block was alloc'd at
==702882==    at 0x48411E8: calloc (vg_replace_malloc.c:1117)
==702882==    by 0x4DEA613: ??? (in /usr/lib64/libwayland-client.so.0.22.0)
==702882==    by 0x4DEB110: wl_proxy_marshal_array_flags (in /usr/lib64/libwayland-client.so.0.22.0)
==702882==    by 0x4DEB3FD: wl_proxy_marshal_flags (in /usr/lib64/libwayland-client.so.0.22.0)
==702882==    by 0x4DF9448: wl_cursor_image_get_buffer (in /usr/lib64/libwayland-cursor.so.0.22.0)
==702882==    by 0x48EF8F7: ??? (in /usr/lib64/libuwac0.so.0.2.0)
==702882==    by 0x10D3E0: ??? (in /usr/bin/wlfreerdp)
==702882==    by 0x49AAB38: ??? (in /usr/lib64/libfreerdp2.so.2.11.7)
==702882==    by 0x4999183: ??? (in /usr/lib64/libfreerdp2.so.2.11.7)
==702882==    by 0x4999CAE: ??? (in /usr/lib64/libfreerdp2.so.2.11.7)
==702882==    by 0x499A3DA: ??? (in /usr/lib64/libfreerdp2.so.2.11.7)
==702882==    by 0x49A4BEB: ??? (in /usr/lib64/libfreerdp2.so.2.11.7)
==702882== 
==702882== Invalid read of size 8
==702882==    at 0x4DEAF63: wl_proxy_add_listener (in /usr/lib64/libwayland-client.so.0.22.0)
==702882==    by 0x48EF919: ??? (in /usr/lib64/libuwac0.so.0.2.0)
==702882==    by 0x10D3E0: ??? (in /usr/bin/wlfreerdp)
==702882==    by 0x49AAB38: ??? (in /usr/lib64/libfreerdp2.so.2.11.7)
==702882==    by 0x4999183: ??? (in /usr/lib64/libfreerdp2.so.2.11.7)
==702882==    by 0x4999CAE: ??? (in /usr/lib64/libfreerdp2.so.2.11.7)
==702882==    by 0x499A3DA: ??? (in /usr/lib64/libfreerdp2.so.2.11.7)
==702882==    by 0x49A4BEB: ??? (in /usr/lib64/libfreerdp2.so.2.11.7)
==702882==    by 0x499AE02: ??? (in /usr/lib64/libfreerdp2.so.2.11.7)
==702882==    by 0x4981FCE: freerdp_check_fds (in /usr/lib64/libfreerdp2.so.2.11.7)
==702882==    by 0x4983082: freerdp_check_event_handles (in /usr/lib64/libfreerdp2.so.2.11.7)
==702882==    by 0x10B95D: ??? (in /usr/bin/wlfreerdp)
==702882==  Address 0x11d09308 is 8 bytes inside a block of size 96 free'd
==702882==    at 0x483EF4C: free (vg_replace_malloc.c:755)
==702882==    by 0x4DEA943: ??? (in /usr/lib64/libwayland-client.so.0.22.0)
==702882==    by 0x4DEC58B: wl_display_dispatch_queue_pending (in /usr/lib64/libwayland-client.so.0.22.0)
==702882==    by 0x48ED79B: ??? (in /usr/lib64/libuwac0.so.0.2.0)
==702882==    by 0x48EE3EE: UwacDisplayDispatch (in /usr/lib64/libuwac0.so.0.2.0)
==702882==    by 0x10B842: ??? (in /usr/bin/wlfreerdp)
==702882==    by 0x4C0FEFC: (below main) (in /lib64/libc-2.32.so)
==702882==  Block was alloc'd at
==702882==    at 0x48411E8: calloc (vg_replace_malloc.c:1117)
==702882==    by 0x4DEA613: ??? (in /usr/lib64/libwayland-client.so.0.22.0)
==702882==    by 0x4DEB110: wl_proxy_marshal_array_flags (in /usr/lib64/libwayland-client.so.0.22.0)
==702882==    by 0x4DEB3FD: wl_proxy_marshal_flags (in /usr/lib64/libwayland-client.so.0.22.0)
==702882==    by 0x4DF9448: wl_cursor_image_get_buffer (in /usr/lib64/libwayland-cursor.so.0.22.0)
==702882==    by 0x48EF8F7: ??? (in /usr/lib64/libuwac0.so.0.2.0)
==702882==    by 0x10D3E0: ??? (in /usr/bin/wlfreerdp)
==702882==    by 0x49AAB38: ??? (in /usr/lib64/libfreerdp2.so.2.11.7)
==702882==    by 0x4999183: ??? (in /usr/lib64/libfreerdp2.so.2.11.7)
==702882==    by 0x4999CAE: ??? (in /usr/lib64/libfreerdp2.so.2.11.7)
==702882==    by 0x499A3DA: ??? (in /usr/lib64/libfreerdp2.so.2.11.7)
==702882==    by 0x49A4BEB: ??? (in /usr/lib64/libfreerdp2.so.2.11.7)
==702882== 
proxy 0x11d09300 already has listener
==702882== Invalid read of size 1
==702882==    at 0x4DEAF5D: wl_proxy_add_listener (in /usr/lib64/libwayland-client.so.0.22.0)
==702882==    by 0x48EF919: ??? (in /usr/lib64/libuwac0.so.0.2.0)
==702882==    by 0x715EEDC: ??? (in /usr/lib64/libffi.so.7.1.0)
==702882==    by 0x715E308: ??? (in /usr/lib64/libffi.so.7.1.0)
==702882==    by 0x4DEE931: ??? (in /usr/lib64/libwayland-client.so.0.22.0)
==702882==    by 0x4DEABE9: ??? (in /usr/lib64/libwayland-client.so.0.22.0)
==702882==    by 0x4DEC58B: wl_display_dispatch_queue_pending (in /usr/lib64/libwayland-client.so.0.22.0)
==702882==    by 0x48ED79B: ??? (in /usr/lib64/libuwac0.so.0.2.0)
==702882==    by 0x48EE3EE: UwacDisplayDispatch (in /usr/lib64/libuwac0.so.0.2.0)
==702882==    by 0x10B842: ??? (in /usr/bin/wlfreerdp)
==702882==    by 0x4C0FEFC: (below main) (in /lib64/libc-2.32.so)
==702882==  Address 0x11d09328 is 40 bytes inside a block of size 96 free'd
==702882==    at 0x483EF4C: free (vg_replace_malloc.c:755)
==702882==    by 0x4DEA943: ??? (in /usr/lib64/libwayland-client.so.0.22.0)
==702882==    by 0x4DEC58B: wl_display_dispatch_queue_pending (in /usr/lib64/libwayland-client.so.0.22.0)
==702882==    by 0x48ED79B: ??? (in /usr/lib64/libuwac0.so.0.2.0)
==702882==    by 0x48EE3EE: UwacDisplayDispatch (in /usr/lib64/libuwac0.so.0.2.0)
==702882==    by 0x10B842: ??? (in /usr/bin/wlfreerdp)
==702882==    by 0x4C0FEFC: (below main) (in /lib64/libc-2.32.so)
==702882==  Block was alloc'd at
==702882==    at 0x48411E8: calloc (vg_replace_malloc.c:1117)
==702882==    by 0x4DEA613: ??? (in /usr/lib64/libwayland-client.so.0.22.0)
==702882==    by 0x4DEB110: wl_proxy_marshal_array_flags (in /usr/lib64/libwayland-client.so.0.22.0)
==702882==    by 0x4DEB3FD: wl_proxy_marshal_flags (in /usr/lib64/libwayland-client.so.0.22.0)
==702882==    by 0x4DF9448: wl_cursor_image_get_buffer (in /usr/lib64/libwayland-cursor.so.0.22.0)
==702882==    by 0x48EF8F7: ??? (in /usr/lib64/libuwac0.so.0.2.0)
==702882==    by 0x10D3E0: ??? (in /usr/bin/wlfreerdp)
==702882==    by 0x49AAB38: ??? (in /usr/lib64/libfreerdp2.so.2.11.7)
==702882==    by 0x4999183: ??? (in /usr/lib64/libfreerdp2.so.2.11.7)
==702882==    by 0x4999CAE: ??? (in /usr/lib64/libfreerdp2.so.2.11.7)
==702882==    by 0x499A3DA: ??? (in /usr/lib64/libfreerdp2.so.2.11.7)
==702882==    by 0x49A4BEB: ??? (in /usr/lib64/libfreerdp2.so.2.11.7)
==702882== 
==702882== Invalid read of size 8
==702882==    at 0x4DEAF63: wl_proxy_add_listener (in /usr/lib64/libwayland-client.so.0.22.0)
==702882==    by 0x48EF919: ??? (in /usr/lib64/libuwac0.so.0.2.0)
==702882==    by 0x715EEDC: ??? (in /usr/lib64/libffi.so.7.1.0)
==702882==    by 0x715E308: ??? (in /usr/lib64/libffi.so.7.1.0)
==702882==    by 0x4DEE931: ??? (in /usr/lib64/libwayland-client.so.0.22.0)
==702882==    by 0x4DEABE9: ??? (in /usr/lib64/libwayland-client.so.0.22.0)
==702882==    by 0x4DEC58B: wl_display_dispatch_queue_pending (in /usr/lib64/libwayland-client.so.0.22.0)
==702882==    by 0x48ED79B: ??? (in /usr/lib64/libuwac0.so.0.2.0)
==702882==    by 0x48EE3EE: UwacDisplayDispatch (in /usr/lib64/libuwac0.so.0.2.0)
==702882==    by 0x10B842: ??? (in /usr/bin/wlfreerdp)
==702882==    by 0x4C0FEFC: (below main) (in /lib64/libc-2.32.so)
==702882==  Address 0x11d09308 is 8 bytes inside a block of size 96 free'd
==702882==    at 0x483EF4C: free (vg_replace_malloc.c:755)
==702882==    by 0x4DEA943: ??? (in /usr/lib64/libwayland-client.so.0.22.0)
==702882==    by 0x4DEC58B: wl_display_dispatch_queue_pending (in /usr/lib64/libwayland-client.so.0.22.0)
==702882==    by 0x48ED79B: ??? (in /usr/lib64/libuwac0.so.0.2.0)
==702882==    by 0x48EE3EE: UwacDisplayDispatch (in /usr/lib64/libuwac0.so.0.2.0)
==702882==    by 0x10B842: ??? (in /usr/bin/wlfreerdp)
==702882==    by 0x4C0FEFC: (below main) (in /lib64/libc-2.32.so)
==702882==  Block was alloc'd at
==702882==    at 0x48411E8: calloc (vg_replace_malloc.c:1117)
==702882==    by 0x4DEA613: ??? (in /usr/lib64/libwayland-client.so.0.22.0)
==702882==    by 0x4DEB110: wl_proxy_marshal_array_flags (in /usr/lib64/libwayland-client.so.0.22.0)
==702882==    by 0x4DEB3FD: wl_proxy_marshal_flags (in /usr/lib64/libwayland-client.so.0.22.0)
==702882==    by 0x4DF9448: wl_cursor_image_get_buffer (in /usr/lib64/libwayland-cursor.so.0.22.0)
==702882==    by 0x48EF8F7: ??? (in /usr/lib64/libuwac0.so.0.2.0)
==702882==    by 0x10D3E0: ??? (in /usr/bin/wlfreerdp)
==702882==    by 0x49AAB38: ??? (in /usr/lib64/libfreerdp2.so.2.11.7)
==702882==    by 0x4999183: ??? (in /usr/lib64/libfreerdp2.so.2.11.7)
==702882==    by 0x4999CAE: ??? (in /usr/lib64/libfreerdp2.so.2.11.7)
==702882==    by 0x499A3DA: ??? (in /usr/lib64/libfreerdp2.so.2.11.7)
==702882==    by 0x49A4BEB: ??? (in /usr/lib64/libfreerdp2.so.2.11.7)
==702882== 
proxy 0x11d09300 already has listener

[20:08:41:514] [702882:702882] [INFO][com.freerdp.client.wayland] - Closed from Wayland
==702882== 
==702882== HEAP SUMMARY:
==702882==     in use at exit: 194,846 bytes in 1,978 blocks
==702882==   total heap usage: 2,488,002 allocs, 2,486,024 frees, 11,157,425,258 bytes allocated
==702882== 
==702882== 96 bytes in 1 blocks are definitely lost in loss record 251 of 306
==702882==    at 0x48411E8: calloc (vg_replace_malloc.c:1117)
==702882==    by 0x4DEA613: ??? (in /usr/lib64/libwayland-client.so.0.22.0)
==702882==    by 0x4DEB110: wl_proxy_marshal_array_flags (in /usr/lib64/libwayland-client.so.0.22.0)
==702882==    by 0x4DEB3FD: wl_proxy_marshal_flags (in /usr/lib64/libwayland-client.so.0.22.0)
==702882==    by 0x48ED912: ??? (in /usr/lib64/libuwac0.so.0.2.0)
==702882==    by 0x48EDE8B: ??? (in /usr/lib64/libuwac0.so.0.2.0)
==702882==    by 0x715EEDC: ??? (in /usr/lib64/libffi.so.7.1.0)
==702882==    by 0x715E308: ??? (in /usr/lib64/libffi.so.7.1.0)
==702882==    by 0x4DEE931: ??? (in /usr/lib64/libwayland-client.so.0.22.0)
==702882==    by 0x4DEABE9: ??? (in /usr/lib64/libwayland-client.so.0.22.0)
==702882==    by 0x4DEC58B: wl_display_dispatch_queue_pending (in /usr/lib64/libwayland-client.so.0.22.0)
==702882==    by 0x4DECB5E: wl_display_roundtrip_queue (in /usr/lib64/libwayland-client.so.0.22.0)
==702882== 
==702882== 96 bytes in 1 blocks are definitely lost in loss record 252 of 306
==702882==    at 0x48411E8: calloc (vg_replace_malloc.c:1117)
==702882==    by 0x4DEA613: ??? (in /usr/lib64/libwayland-client.so.0.22.0)
==702882==    by 0x4DEB110: wl_proxy_marshal_array_flags (in /usr/lib64/libwayland-client.so.0.22.0)
==702882==    by 0x4DEB3FD: wl_proxy_marshal_flags (in /usr/lib64/libwayland-client.so.0.22.0)
==702882==    by 0x48F1B2E: UwacCreateWindowShm (in /usr/lib64/libuwac0.so.0.2.0)
==702882==    by 0x10CB29: ??? (in /usr/bin/wlfreerdp)
==702882==    by 0x4983571: freerdp_connect (in /usr/lib64/libfreerdp2.so.2.11.7)
==702882==    by 0x10B7AA: ??? (in /usr/bin/wlfreerdp)
==702882==    by 0x4C0FEFC: (below main) (in /lib64/libc-2.32.so)
==702882== 
==702882== 96 bytes in 1 blocks are definitely lost in loss record 253 of 306
==702882==    at 0x48411E8: calloc (vg_replace_malloc.c:1117)
==702882==    by 0x4DEA613: ??? (in /usr/lib64/libwayland-client.so.0.22.0)
==702882==    by 0x4DEB110: wl_proxy_marshal_array_flags (in /usr/lib64/libwayland-client.so.0.22.0)
==702882==    by 0x4DEB3FD: wl_proxy_marshal_flags (in /usr/lib64/libwayland-client.so.0.22.0)
==702882==    by 0x48F2409: UwacWindowSubmitBuffer (in /usr/lib64/libuwac0.so.0.2.0)
==702882==    by 0x10BA23: ??? (in /usr/bin/wlfreerdp)
==702882==    by 0x4C0FEFC: (below main) (in /lib64/libc-2.32.so)
==702882== 
==702882== 96 bytes in 1 blocks are definitely lost in loss record 254 of 306
==702882==    at 0x48411E8: calloc (vg_replace_malloc.c:1117)
==702882==    by 0x4DEA613: ??? (in /usr/lib64/libwayland-client.so.0.22.0)
==702882==    by 0x4DEB110: wl_proxy_marshal_array_flags (in /usr/lib64/libwayland-client.so.0.22.0)
==702882==    by 0x4DEB3FD: wl_proxy_marshal_flags (in /usr/lib64/libwayland-client.so.0.22.0)
==702882==    by 0x48EFAB9: ??? (in /usr/lib64/libuwac0.so.0.2.0)
==702882==    by 0x715EEDC: ??? (in /usr/lib64/libffi.so.7.1.0)
==702882==    by 0x715E308: ??? (in /usr/lib64/libffi.so.7.1.0)
==702882==    by 0x4DEE931: ??? (in /usr/lib64/libwayland-client.so.0.22.0)
==702882==    by 0x4DEABE9: ??? (in /usr/lib64/libwayland-client.so.0.22.0)
==702882==    by 0x4DEC58B: wl_display_dispatch_queue_pending (in /usr/lib64/libwayland-client.so.0.22.0)
==702882==    by 0x48ED79B: ??? (in /usr/lib64/libuwac0.so.0.2.0)
==702882==    by 0x48EE3EE: UwacDisplayDispatch (in /usr/lib64/libuwac0.so.0.2.0)
==702882== 
==702882== 192 bytes in 2 blocks are definitely lost in loss record 267 of 306
==702882==    at 0x48411E8: calloc (vg_replace_malloc.c:1117)
==702882==    by 0x4DEC0F5: wl_display_read_events (in /usr/lib64/libwayland-client.so.0.22.0)
==702882==    by 0x4DEC820: wl_display_dispatch_queue (in /usr/lib64/libwayland-client.so.0.22.0)
==702882==    by 0x48ED79B: ??? (in /usr/lib64/libuwac0.so.0.2.0)
==702882==    by 0x48EE3EE: UwacDisplayDispatch (in /usr/lib64/libuwac0.so.0.2.0)
==702882==    by 0x10B842: ??? (in /usr/bin/wlfreerdp)
==702882==    by 0x4C0FEFC: (below main) (in /lib64/libc-2.32.so)
==702882== 
==702882== 208 (112 direct, 96 indirect) bytes in 2 blocks are definitely lost in loss record 268 of 306
==702882==    at 0x483C79B: malloc (vg_replace_malloc.c:380)
==702882==    by 0x4B11254: Stream_New (in /usr/lib64/libwinpr2.so.2.11.7)
==702882==    by 0x489CC33: ??? (in /usr/lib64/libfreerdp-client2.so.2.11.7)
==702882==    by 0x498576C: freerdp_channels_data (in /usr/lib64/libfreerdp2.so.2.11.7)
==702882==    by 0x49B1025: ??? (in /usr/lib64/libfreerdp2.so.2.11.7)
==702882==    by 0x4999AFC: ??? (in /usr/lib64/libfreerdp2.so.2.11.7)
==702882==    by 0x499A3DA: ??? (in /usr/lib64/libfreerdp2.so.2.11.7)
==702882==    by 0x49A4BEB: ??? (in /usr/lib64/libfreerdp2.so.2.11.7)
==702882==    by 0x499AE02: ??? (in /usr/lib64/libfreerdp2.so.2.11.7)
==702882==    by 0x4981FCE: freerdp_check_fds (in /usr/lib64/libfreerdp2.so.2.11.7)
==702882==    by 0x4983082: freerdp_check_event_handles (in /usr/lib64/libfreerdp2.so.2.11.7)
==702882==    by 0x10B95D: ??? (in /usr/bin/wlfreerdp)
==702882== 
==702882== 1,566 (40 direct, 1,526 indirect) bytes in 1 blocks are definitely lost in loss record 286 of 306
==702882==    at 0x483C79B: malloc (vg_replace_malloc.c:380)
==702882==    by 0x4DF9480: wl_cursor_theme_load (in /usr/lib64/libwayland-cursor.so.0.22.0)
==702882==    by 0x48EFEDA: ??? (in /usr/lib64/libuwac0.so.0.2.0)
==702882==    by 0x715EEDC: ??? (in /usr/lib64/libffi.so.7.1.0)
==702882==    by 0x715E308: ??? (in /usr/lib64/libffi.so.7.1.0)
==702882==    by 0x4DEE931: ??? (in /usr/lib64/libwayland-client.so.0.22.0)
==702882==    by 0x4DEABE9: ??? (in /usr/lib64/libwayland-client.so.0.22.0)
==702882==    by 0x4DEC58B: wl_display_dispatch_queue_pending (in /usr/lib64/libwayland-client.so.0.22.0)
==702882==    by 0x4DECB5E: wl_display_roundtrip_queue (in /usr/lib64/libwayland-client.so.0.22.0)
==702882==    by 0x48EE1CA: UwacOpenDisplay (in /usr/lib64/libuwac0.so.0.2.0)
==702882==    by 0x10C468: ??? (in /usr/bin/wlfreerdp)
==702882==    by 0x49826B8: freerdp_context_new (in /usr/lib64/libfreerdp2.so.2.11.7)
==702882== 
==702882== 135,943 (1,424 direct, 134,519 indirect) bytes in 1 blocks are definitely lost in loss record 306 of 306
==702882==    at 0x48411E8: calloc (vg_replace_malloc.c:1117)
==702882==    by 0x4E1F94D: ??? (in /usr/lib64/libxkbcommon.so.0.0.0)
==702882==    by 0x4E1F165: xkb_keymap_new_from_buffer (in /usr/lib64/libxkbcommon.so.0.0.0)
==702882==    by 0x48EF262: ??? (in /usr/lib64/libuwac0.so.0.2.0)
==702882==    by 0x715EEDC: ??? (in /usr/lib64/libffi.so.7.1.0)
==702882==    by 0x715E308: ??? (in /usr/lib64/libffi.so.7.1.0)
==702882==    by 0x4DEE931: ??? (in /usr/lib64/libwayland-client.so.0.22.0)
==702882==    by 0x4DEABE9: ??? (in /usr/lib64/libwayland-client.so.0.22.0)
==702882==    by 0x4DEC58B: wl_display_dispatch_queue_pending (in /usr/lib64/libwayland-client.so.0.22.0)
==702882==    by 0x4DECB5E: wl_display_roundtrip_queue (in /usr/lib64/libwayland-client.so.0.22.0)
==702882==    by 0x48F1B7E: UwacCreateWindowShm (in /usr/lib64/libuwac0.so.0.2.0)
==702882==    by 0x10CB29: ??? (in /usr/bin/wlfreerdp)
==702882== 
==702882== LEAK SUMMARY:
==702882==    definitely lost: 2,152 bytes in 10 blocks
==702882==    indirectly lost: 136,141 bytes in 1,684 blocks
==702882==      possibly lost: 0 bytes in 0 blocks
==702882==    still reachable: 54,537 bytes in 263 blocks
==702882==         suppressed: 0 bytes in 0 blocks
==702882== Reachable blocks (those to which a pointer was found) are not shown.
==702882== To see them, rerun with: --leak-check=full --show-leak-kinds=all
==702882== 
==702882== For lists of detected and suppressed errors, rerun with: -s
==702882== ERROR SUMMARY: 12 errors from 12 contexts (suppressed: 0 from 0)
-- завершение несколькоминутного процесса ---

Т.е., предварительно, возможно проблема не столько во freerdp, сколько в его взаимодействии с KDE on Wayland.
Comment 6 JcVai 2024-07-26 19:54:44 MSK
По результатам теста за день (два процесса, каждый отъел примерное по гигабайту) отладка говорит, что очевидных утечек такого объема не выявлено, но основной объем - массив данных: есть ли какие еще направления движения, кроме дампа через valgrind --tool=massif ?
--
==721714== HEAP SUMMARY:
==721714==     in use at exit: 194,542 bytes in 1,973 blocks
==721714==   total heap usage: 253,257,251 allocs, 253,255,278 frees, 1,070,740,604,285 bytes allocated
--
Comment 7 JcVai 2024-10-10 10:11:32 MSK
Для истории: на ALT Workstation K 10.4 (Sorbaronia Mitschurinii) проявляется при использовании wlfreerdp под KDE Wayland и не проявляется при использовании xfreerdp под KDE X11.