Форум: "Основная";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
ВнизAV при использовании юнита Variants Найти похожие ветки
← →
Сергей М. © (2010-03-09 11:15) [0]Столкнулся с неожиданной засадой при использовании юнита Variants.
Целевая задача :
реализовать в D7EE DLL-модуль (использующий юнит Classes и собираемый без использования Run-Time пакетов), загружаемый в адр.пространства создаваемых системой процессов с использованием документированного механизма автозагрузки указанием модуля в списке
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs
Проблема:
при создании и инициализации процессов ряда приложений в ходе инициализации загружаемого в их АП моего DLL-модуля возбуждается AV-исключение с дословным сообщением постоянного содержания в появляющемся диалоговом окне:
Инструкция по адресу 0x7C918FEA обратилась по адресу 0x00000010. Память не может быть "written".
После закрытия диал.окна эти процессы продолжают и инициализацию и успешно стартуют, естественно без моего DLL-модуля в своих АП, поскольку его инициализация привела к отказу по необработанному моим DLL-модулем исключению.
В ходе анализа причин и условий возникающей проблемы выявлены следующие факты:
1. Исключение возбуждается в коде модуля ntdll.dll в теле ф-ции RtlInitializeCriticalSection()
2. Исключение возбуждается как минимум при условии явного (прямым указанием в USES) или неявного (фигурирантом в USES иных юнитов в составе VCL и RTL, например, Classes) использования в проекте моего DLL-модуля юнита Variants
3. Исключение возбуждается только при условии сборки моего DLL-модуля без использования Run-Time пакетов.
4. Инициализация критической секции фигурирует в тексте юнита Variants в секции INITIALIZATION.
Прошу тех, кто возможно вплотную сталкивался с такой проблемой, высказать свои соображения по ней и возможные варианты ее преодоления в упомянутых выше условиях.
Текст проекта DLL-модуля для тестирования:
library TestDll;
uses
Variants;
{$R *.res}
begin
end.
Пример списка приложений, запуск которых приводит к возникновению вышеописанной проблемы:
delphi7.exe
mmc.exe
paint.exe
skype.exe
virtualbox.exe
TeamViewer.exe (TeamViewer4)
Пример списка приложений, запуск которых НЕ приводит к возникновению вышеописанной проблемы:
iexplore.exe
firefox.exe
procexpr.exe
calc.exe
wordpad.exe
excel.exe
notepad.exe
TeamViewer.exe (TeamViewer3)
FAR.exe
Воспроизводима ли проблемная ситуация в других условиях (иная ОС, иная Delphi IDE) ?
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.064 c