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мб)
(Ответ для 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мб на протяжении всего времени. Пожалуйста, можете описать процесс воспроизведения ошибки по шагам, возможно наши действия где-то отличаются.
Доброго времени суток, Семен. Локальной системой 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:<пароль> Как вариант для теста, можно убедиться, что свободной оперативной достаточно (возможно отъедается пока свободна) и запустить на удаленном сеансе меняющийся видеопоток, например онлайн-тв канал какой-нибудь (чтоб не было статичной картинки). Ибо при работе в удаленных сеансах (редко меняющиеся окна обычного рабочего процесса), явной выраженности подобного не замечал (хотя и не оставлял их на длительный срок). Еще, как вариант, может быть проблема при отображении не на основном мониторе (многомониторное рабочее место) Сейчас приложу скриншоты системного монитора, где запущенные два сеанса из консоли со вчерашнего утра (т.е. за сутки) съели за три гигабайта.
Created attachment 16448 [details] Потребление памяти двумя rdp-клиентами, запущенными из kde konsole with rdp - после суток работы двух rdp-клиентов without rdp - после завершения rdp-сеансов with restarted rdp - посла запуска новых сеансов
Ошибку воспроизвести не удалось. При сеccии RDP между Windows 10 Pro(сервер) и KWorkstation(клиент) за 8 часов с потоковым полноэкранным видео рост потребления оперативной памяти составил 1.1 МБ.
Ясно, значит "проблема плавающая", может зависеть и от 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.
По результатам теста за день (два процесса, каждый отъел примерное по гигабайту) отладка говорит, что очевидных утечек такого объема не выявлено, но основной объем - массив данных: есть ли какие еще направления движения, кроме дампа через 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 --
Для истории: на ALT Workstation K 10.4 (Sorbaronia Mitschurinii) проявляется при использовании wlfreerdp под KDE Wayland и не проявляется при использовании xfreerdp под KDE X11.