Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / SaVCL: невыгрузка приложения из памяти при использовании DLL / 7 сообщений из 7, страница 1 из 1
12.04.2006, 12:51
    #33660912
Александр Гoлдун
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SaVCL: невыгрузка приложения из памяти при использовании DLL
Суть проблемы: приложении есть подключенный 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
12.04.2006, 14:52
    #33661485
SaVCL: невыгрузка приложения из памяти при использовании DLL
> Могу привести исходники для воспроизведения ситуации

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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