Статус: Активный участник
Группы: Участники
Зарегистрирован: 10.07.2014(UTC) Сообщений: 97 Откуда: Москва Сказал(а) «Спасибо»: 21 раз
|
Здравствуйте. При проведении нагрузочного тестирования нашего ПО, которое использует КриптоПРО CSP, я обнаружил утечку памяти. Посылаю вам небольшой тестовый пример на "С++" демонстрирующий как это происходит. Если в примере закомментировать строку № 89: ret = CryptSignHash(h_hash, key_usage, NULL, 0, signature, &signature_len); --- то утечка памяти исчезает. Если же строка есть, то память "течет" настолько явно, что в "Диспетчере задач" для этого процесса видно монотонный рост занимаемой памяти - где-то по 100Кб в секунду. В архиве _CPP.zip (50kb) загружен 18 раз(а). есть контейнер с приватным ключом и сертификатом на котором я запускаю тестовую утилиту (пароль "123456"). Так же есть два исполняемых модуля: "TestCryptSignHash-bad.exe" - с утечкой памяти (строка № 89 не закомментирована) и "TestCryptSignHash-good.exe" - без утечки памяти (строка № 89 закомментирована). Версия CSP - 4.0.9842. Версия ОС - "Windows 7 Профессиональная". Что делать, чтобы утечки памяти не было? Нам важно подписывать много сообщений и делать это "быстро". Пересоздавать провайдер для каждой подписи не хочется (тогда, вроде бы утечек нет - расход памяти в "Диспетчере задач" не такой стремительный). Но если пересоздавать провайдер, то все начинает работать чуть ли не в 30 раз медленнее. Тестовый пример я собирал "надергивая" из боевых исходников куски кода и максимально их упрощая, поэтому он выглядит несколько коряво. Основной вопрос на который хотелось бы получить ответ - почему в большом цикле на 1000000000 итераций течет память в функции "CryptSignHash". С уважением, Константин Ткачук.
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,377 Откуда: КРИПТО-ПРО Сказал «Спасибо»: 32 раз Поблагодарили: 706 раз в 614 постах
|
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 12.08.2013(UTC) Сообщений: 834 Откуда: Москва Сказал «Спасибо»: 5 раз Поблагодарили: 215 раз в 174 постах
|
Добрый день. Пустил ваш пример на свежей сборке CSP - память утекает крайне медленно (12 КБ / минуту примерно). Профилировщик VisualStudio показывает, что это не связанные с нашим кодом аллокации внутри ntdll.dll. В целом, мы непрерывно проверяем код на утечки с помощью valgrind и ASAN(LSAN), так что что-то настолько явное как утечка на функции подписи, точно бы поймали.
Предлагаю для начала поставить более актуальную версию CSP. |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 10.07.2014(UTC) Сообщений: 97 Откуда: Москва Сказал(а) «Спасибо»: 21 раз
|
Здравствуйте.
Действительно, под CSP 5.0 утечек памяти не наблюдаю.
С уважением, Константин Ткачук.
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close