После добавления вызова на сайт https на нашем сервере данных DataSnap он начал сбой при завершении.Delphi XE7/10 Seattle DataSnap OpenSSL Нарушение доступа при завершении
Аварии на Data.DBXOpenSSL.pas
более конкретно по этому методу:
class procedure TRSACypher.ClearKey(var AKey: PRSAPeer);
begin
if AKey <> nil then
IPPeerProcs._RSA_free(AKey); // Crash here
AKey := nil;
end;
Исключение составляет:
First chance exception at $00000000. Exception class $C0000005 with message 'access violation at 0x00000000: read of address 0x00000000'. Process Project1.exe (3996)
я написал проект, который воспроизводит эту проблему и он падает на обоих XE7 и Delphi 10 Seattle, проект находится здесь:
https://gist.github.com/fabioxgn/aaaddb5aa65db5d17202
Что делает проект просто:
- Совершение вызова GET с использованием OpenSSL для https://google.com
- Запускает DataSnap сервер
- открывает и закрывает одно подключение к этому DataSnap сервера
Несколько моментов:
- Если не сделать вызов по протоколу HTTPS, все работает отлично
- Это происходит только с фильтром RSA включена, если удалить фильтр не врезаться
Любые подсказки о том, что делает этот крах? Я пробовал debbuging, но этот код использует много IPPeerFactory, и я не смог найти окончательный код, который запускается.
Редактировать
Я открыл доклад, и они подтвердили это как ошибку: https://quality.embarcadero.com/browse/RSP-12495
«IPPeer» - это уровень абстракции, который Embarcadero использует для скрытия частной копии Indy, поэтому пользователи могут свободно обновлять собственную копию Indy в своих проектах, не нарушая технологии Embarcadero, такие как DataSnap. –