powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / SaVCL: невыгрузка приложения из памяти при использовании DLL
7 сообщений из 7, страница 1 из 1
SaVCL: невыгрузка приложения из памяти при использовании DLL
    #33660912
Фотография Александр Гoлдун
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Суть проблемы: приложении есть подключенный SaDb. Из приложения вызывается форма из DLL, которая использует DataModule из той же DLL. На datamodule тоже есть SaDB, который тоже коннектится к базе.
Если этот модуль создается в секции initialization своего юнита, освобождается в finalization, то приложение при закрытии главной формы не выгружается из памяти.
При этом замечено:
1. Нормально выгружается, если на момент закрытия активен только один SaDb либо в приложении либо в dll
2. Нормально выгружается, если в finalization не делать модулю Free
3. НЕ выгружается, даже если в finalization или в DataModuleDestroy делать SaDb1.Active := false;
4. Поведение не зависит от использования SharedName, проявляется даже при отдельных коннектах к разным базам.

Проверено на WinXP и 2000, Delphi 6 Update pak 2, SaVCL 2.17. Могу привести исходники для воспроизведения ситуации.

P.S. Сергей, может есть смысл на RUSUG форум по SaVCL организовать?
...
Рейтинг: 0 / 0
SaVCL: невыгрузка приложения из памяти при использовании DLL
    #33661485
> Могу привести исходники для воспроизведения ситуации

Да, Александр, если это не сложно, то вышли исходники. Обязательно надо в этом разобраться.

> P.S. Сергей, может есть смысл на RUSUG форум по SaVCL организовать?

Смысл, наверное, есть. Хотя надо поинтересоваться у других пользователей, нужен отдельный форум или нет.

С уважением, Сергей Гаврилов.
...
Рейтинг: 0 / 0
SaVCL: невыгрузка приложения из памяти при использовании DLL
    #33661548
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В принципе дело хорошее. Можно на РУСУГе открыть раздел бесплатного софта и там выложить их описание и download. Если пользователям будет удобно, то под каждый такой продукт откроем форум. Первыми на очереди было бы неплохо выложить в данный раздел saVCL и MacroSQL (по отношению к нему уже ведутся определенные работы, просто пока не достаток свободного времени).
...
Рейтинг: 0 / 0
SaVCL: невыгрузка приложения из памяти при использовании DLL
    #33661689
Фотография Александр Гoлдун
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Гаврилов> Могу привести исходники для воспроизведения ситуации

Да, Александр, если это не сложно, то вышли исходники. Обязательно надо в этом разобраться.

Оправил на e-mail в профиле. Перепроверид поведение. Пункт 1 не совсем верен. Если активировать и потом отключить SaDb в Exe, а потом активировать в DLL - все равно не выгружается. Вот если в exe вообще не подключать SaDb - то тогда выгружается. В общем тест там простейший, можно поэкспериментировать.
Сергей Гаврилов
> P.S. Сергей, может есть смысл на RUSUG форум по SaVCL организовать?

Смысл, наверное, есть. Хотя надо поинтересоваться у других пользователей, нужен отдельный форум или нет.

Уже поинтересовался .
...
Рейтинг: 0 / 0
SaVCL: невыгрузка приложения из памяти при использовании DLL
    #33662390
Фотография Александр Гoлдун
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Форум про SaVCL уже открыт
...
Рейтинг: 0 / 0
SaVCL: невыгрузка приложения из памяти при использовании DLL
    #33672262
Экспериментальным путем удалось выяснить забавную вещь: при выгрузке делфийного приложения отследить порядок автоматического освобождения (без явного вызова FreeLibrary) загруженных с помощью LoadLibrary dll-библиотек невозможно.

Александр, finalization в твоей библиотеке вызывается фактически после выгрузки sadll*.dll (после того, как система вызвала в sadll функцию DllEntryPoint с параметром DLL_PROCESS_DETACH). Если в твоем примере в головной программе в явном виде прописать FreeLibrary (для твоей библиотеки), то вроде все работает и выгружается.

С уважением, Сергей Гаврилов.
...
Рейтинг: 0 / 0
SaVCL: невыгрузка приложения из памяти при использовании DLL
    #33672283
Фотография Александр Гoлдун
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Гаврилов пишет:
> Александр, finalization в твоей библиотеке вызывается фактически после
> выгрузки sadll*.dll

Что-то подобное я подозревал

> Если в твоем примере в
> головной программе в явном виде прописать FreeLibrary (для твоей
> библиотеки), то вроде все работает и выгружается.

Смысл ясен. Я проще поступил - убрал finalization. Он там неактуален -
поставил чисто из привычки парности - если что-то создаешь, то не забудь
освободить

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / SaVCL: невыгрузка приложения из памяти при использовании DLL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]