|
Firebird 2.5 embedded и закрытие программы приводит к выбросу исключения
|
|||
---|---|---|---|
#18+
Извиняюсь если не в этот форум... Среда разработки Delphi XE8, Firebird embedded 2.5.5.26952 Все прекрасно работает до момента закрытия программы. В главной форме закрываются обращенеи к базе данных, ошибок нет. Но в уже непонятно в какой момент выбрасывает Access violetion по адресу XXX. Естественно в отладцике ассемблерного кода там все запонено нулями. Решил во время работы проверить, что за код там располагается и неожиданно открыл, что там оказывается часть кода из MSVCR80.dll, функция _endthreadex. Кто-нибудь с такими минами дело имел? Или может я не правильно финализацию из embedded делаю (может какой мануал по этому делу пропустил)? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2016, 16:09 |
|
Firebird 2.5 embedded и закрытие программы приводит к выбросу исключения
|
|||
---|---|---|---|
#18+
svd, Похоже на отсутствие вызова fb_shutdown() в конце работы. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2016, 16:17 |
|
Firebird 2.5 embedded и закрытие программы приводит к выбросу исключения
|
|||
---|---|---|---|
#18+
svd, нужно вызвать fb_shutdown перед выгрузкой библиотеки\закрытием приложения ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2016, 16:17 |
|
Firebird 2.5 embedded и закрытие программы приводит к выбросу исключения
|
|||
---|---|---|---|
#18+
Спасибо за помошь!!! для начала попытался что либо в сети про эту функцию найти и почитать (так как в компонентах прямого вызова пока не обнаружил). Но тут нагуглил описание из релизноута ( http://www.firebirdsql.org/rlsnotesh/rlsnotes25.html ) Important for Application Developers fb_shutdown() does not perform a shutdown of a remote server to which your application might be concurrently attached. In fact, all of the Firebird client libraries—including the one in embedded— call it automatically at exit() , as long as the client is attached to at least one database or service. Hence, it should never be called by a client in the context of a remote attachment . Как я понимаю на франзуском, вызов функции производится автоматически из exit(). То бишь как бы все уже должно было быть реализовано. А последняя строчка о вызове к удаленному серверу натолкнула на мысль, что в этом то как раз и дело: перед ошибкой буквально изменил строку соединения на содинение с удаленным сервером, ибо неудобно каждый раз стороннего клиента отключать. За одно исследования привели меня на firebirdsql.org, где я обнаружил последнюю версию 2.5.6.27020, у которой такого эффекта уже нет. Протестировал и с embedded, и с удаленным подключением - полет нормальный. Спасибо большое за помощь. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2016, 16:58 |
|
|
start [/forum/topic.php?fid=40&fpage=57&tid=1562068]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
31ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
35ms |
get tp. blocked users: |
1ms |
others: | 266ms |
total: | 370ms |
0 / 0 |