Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Утечки памяти в GostCryptography #36

Open
lyakhlyakh opened this issue Aug 12, 2020 · 4 comments
Open

Утечки памяти в GostCryptography #36

lyakhlyakh opened this issue Aug 12, 2020 · 4 comments

Comments

@lyakhlyakh
Copy link

Здравствуйте! Возможны ли утечки памяти при использовании библиотеки GostCryptography? Обращался ли к Вам кто-либо с данной проблемой? В коде своих сервисов все объекты после использования мы освобождаем. Мы используем GostCryptography для шифрования и подписи сообщений. Взаимодействие с сервисом ФСС для отправки ЭЛН(шифрование) и взаимодействие с Федеральной электронной регистратурой (подпись запросов). На сервере в продуктивном контуре, где запущены наши сервисы, стоит крипто-про CSP 4.0.9963, Версия ядра СКЗИ: 4.0.9014 KC1. ОС: Windows Server 2016 Standart, наблюдается постоянное увеличение памяти, используемое сервисами. Может подскажите куда копать?

@AlexMAS
Copy link
Owner

AlexMAS commented Aug 12, 2020

Здравствуйте. Вероятность этого есть, т.к. вызывается unmanaged код и, возможно, где-то не освобождается память. До сих пор жалобы не поступили. Могу порекомендовать сделать нагрузочный тест, который делает характерную для вашего приложения работу, и запустить его через memory profiler (dotMemory, например).

@lyakhlyakh
Copy link
Author

Благодарю Вас за столь быстрый ответ.
image
Не могли бы Вы взглянуть на скриншот dotMemory. Судя по скриншоту создаются объекты SafeKeyHandleImpl, но при этом из памяти они не освобождаются. Это нормальное поведение библиотеки?

@AlexMAS
Copy link
Owner

AlexMAS commented Aug 12, 2020

Тут трудно что-то сказать, нужно попытаться как-то локализовать проблемную ситуацию, симулировав часть работы вашей системы. Если есть возможность, сделайте несколько snapshots один за другим через какое-то время. Например, один сейчас, второй через 1 час работы, третий через 2 часа и т.п. (размер интервала можете выбрать, исходя из того, как быстро растет память: чем быстрей, тем меньше можно брать интервал). Посмотрите diff между этими snapshots, там должно быть видно где и что регулярно прибавляется.

Относительно SafeKeyHandleImpl - это по сути ссылка на unmanaged-объект. Логика его освобождения определена методом ReleaseHandle(), который должен вызываться при освобождении этого объекта. Если все disposable-экземпляры обернуты в using, то рано или поздно сборщик мусора должен их освободить. Если где-то (в коде библиотеки или у вас) остается повисшая ссылка, то для ее обнаружения нам, скорей всего, придется сузить задачу, чтобы ее можно было воспроизвести, отладить и исправить.

@DeminAO
Copy link

DeminAO commented Feb 2, 2021

Добрый день. Вот, Наткнулся на беседу. Больше информации не поступало, так понимаю?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants