Bug 61265
| Summary: | colord: утечка памяти при удалении и повторном появлении файла ICC-профиля | ||||||
|---|---|---|---|---|---|---|---|
| Product: | Sisyphus | Reporter: | Vitaly Lipatov <lav> | ||||
| Component: | colord | Assignee: | Yuri N. Sedunov <aris> | ||||
| Status: | RESOLVED FIXED | QA Contact: | qa-sisyphus | ||||
| Severity: | normal | ||||||
| Priority: | P5 | CC: | aris | ||||
| Version: | unstable | ||||||
| Hardware: | x86_64 | ||||||
| OS: | Linux | ||||||
| Attachments: |
|
||||||
Created attachment 22841 [details] Исправление утечек при удалении файла профиля (апстрим PR #219), для 1.4.8 Исправление отправлено в апстрим: https://github.com/hughsie/colord/pull/219 . Патч из этого PR прикреплён, на 1.4.8 накладывается чисто (patch -p1). Причина: при удалении файла профиля не освобождаются две ссылки, полученные с transfer full: 1. lib/colord/cd-icc-store.c, cd_icc_store_file_monitor_changed_cb(): CdIcc из cd_icc_store_find_by_filename() остаётся в памяти вместе с данными профиля. Это и есть рост памяти. 2. src/cd-main.c, cd_main_icc_store_removed_cb(): CdProfile из cd_profile_array_get_by_filename() не уничтожается, его объект остаётся на D-Bus, поэтому при повторном появлении файла выдаётся «already exported». Проверка на Sisyphus (демон и libcolordprivate с патчем, профиль 121 КиБ удаляется и возвращается): - 90 циклов: без патча RSS 13,5 → 24,9 МиБ, с патчем 13,3 → 13,3 МиБ; - 30 циклов: без патча 30 предупреждений «already exported», с патчем 0; профиль каждый раз регистрируется заново. colord-1.4.9-alt0.5 |

Description
Vitaly Lipatov 2026-10-30 08:42:22 MSK