Нарисовалась такая проблема:
создается COM-объект и в цикле вызывается его метод
Execute несколько раз.
В этом методе корректно создаются и уничтожаются собственные классы.
Метод
Destroy объекта отрабатыватся при
RecoverDB := UnassignedНо при закрытии вызывающего модуля (exe-шника) возникает
Exception:
The instruction at "0x079e8030" referenced memory at "0xefe54c7c". The memory could not be "written".
Было замечено, что если цикл отрабатывает
нечетное кол-во раз, то ошибки при закрытии приложения не возникает, при
четном кол-ве раз - ошибка возникает всегда.
Трассировка показала, что
Exception возникает в юните
SysInit:
unit System
procedure _Halt0;
....
if InitContext.DllInitState = 1 then
InitContext.ExitProcessTLS;
if InitContext.DllInitState <> 0 then
ExitDll;
....
unit SysInit;
procedure ExitProcessTLS;
begin
if @TlsLast = nil then // здесь ошибка!!!
Exit;
ExitThreadTLS;
if TlsIndex <> -1 then
TlsFree(TlsIndex);
end;
Уже весь мозг сломал....