Продолжение проблем с fbembed.dll

0 views
Skip to first unread message

Andrei K.

unread,
Mar 23, 2014, 2:16:39 PM3/23/14
to ru-fi...@googlegroups.com

Добрый день,

Краткое содержание предыдущих серий.
Встроенный ФБ 2.5.3 работает нормально
до версии 2.5.3.26652 включительно.

В сентябре 2013 я попробовал обновиться
до 2.5.3.26700 и все мои автоматические
процессы рухнули, а клиенты начали
жаловаться на AV при выходе из программы.

Я писал об этом здесь:

https://groups.google.com/forum/?hl=en#!topic/ru-firebird/U6hAE_8_xFE

и здесь:

https://groups.google.com/forum/?hl=en#!topic/ru-firebird/aqBf1uGucLE

Тогда же я вернулся на июньскую версию.

Вот сейчас появилось время снова потестировать.
Взял последнюю версию 26748. С ней, при завершении
приложения я через раз получаю такое сообщение об ошибке:


Сигнатура проблемы:
  Имя события проблемы:    BEX
  Имя приложения:    gedemin.exe
  Версия приложения:    2.5.19.8157
  Отметка времени приложения:    2a425e19
  Имя модуля с ошибкой:    MSVCR80.dll_unloaded
  Версия модуля с ошибкой:    0.0.0.0
  Отметка времени модуля с ошибкой:    4dcddbf3
  Смещение исключения:    662c29e1
  Код исключения:    c0000005
  Данные исключения:    00000008
  Версия ОС:    6.1.7601.2.1.0.400.8
  Код языка:    1059
  Дополнительные сведения 1:    0a9e
  Дополнительные сведения 2:    0a9e372d3b4ad19135b953a78882e789
  Дополнительные сведения 3:    0a9e
  Дополнительные сведения 4:    0a9e372d3b4ad19135b953a78882e789


Перед появлением ошибки идет пауза секунд на 5-10. На свой
выпуклый программистский глаз могу сказать, что скорее всего
несколько нитей подвисают на дедлоке, пока он не разрешается
по таймауту. После таймаута нить пытается обратиться  к библиотеке,
которая уже выгружена в другой нити.

Пока снова вынужден вернуться к версии от июня 2013 года. С ней
все работает как часы.




Simonov Denis

unread,
Mar 24, 2014, 1:28:41 AM3/24/14
to ru-fi...@googlegroups.com
Andrei K. <gs1994-Re5JQEe...@public.gmane.org> писал(а) в
своём письме Sun, 23 Mar 2014 22:16:39 +0400:

Скорее всего программа не вызывает fb_shutdown перед выходом. До недавнего
времени IBExpert тоже падал при завершнении работы правда только с FB3.
После того, как Алесандр сделал вызов fb_shutdown падения прекратились
--
Написано с помощью почтового клиента Opera: http://www.opera.com/mail/

Andrei K.

unread,
Mar 24, 2014, 5:14:30 AM3/24/14
to ru-fi...@googlegroups.com, sim-...@list.ru

У нас вызывается FreeLibrary для fbembed.dll при завершении программы.
Добавлю конечно fb_shutdown перед с таймаутом 0. Только, по идее,
в процессе освобождения библиотеки fb_shutdown должен и так
вызываться.


On Monday, March 24, 2014 8:28:41 AM UTC+3, Simonov Denis wrote:
Andrei K. <gs1994-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> писал(а) в  

Khorsun Vlad

unread,
Mar 24, 2014, 6:11:58 AM3/24/14
to ru-fi...@googlegroups.com
"Andrei K." ...
>
> У нас вызывается FreeLibrary для fbembed.dll при завершении программы.
> Добавлю конечно fb_shutdown перед с таймаутом 0. Только, по идее,
> в процессе освобождения библиотеки fb_shutdown должен и так
> вызываться.

Ага, и мы ввели fb_shutdown от нечего делать...

Ещё раз - вызов fb_shutdown *перед* выходом есть *обязательное* условие для любой
программы, работающей с embedded. Вызов его из FreeLibrary - *не работает* в общем
случае. Ты можешь забить на рекомендации, но это уже твои проблемы.

В 3-ке, скорее всего, fb_shutdown будет рекомендован и для обычных клиентов, не
только для embedded.

--
Хорсун Влад

PS Я говорил тебе об fb_shutdown почти полгода назад - 1-го октября.


Andrei K.

unread,
Mar 24, 2014, 6:24:52 AM3/24/14
to ru-fi...@googlegroups.com
понял. буду добавлять.

Sergey Mereutsa

unread,
Mar 24, 2014, 7:42:58 AM3/24/14
to ru-fi...@googlegroups.com
Привет!

> В 3-ке, скорее всего, fb_shutdown будет рекомендован и для обычных клиентов, не
> только для embedded.

А нельзя его воткнуть внутрь isc_detach_database()? Тогда и
переписывать ничего не потребуется :)

--
Best regards,
Sergey mailto:gebe...@gmail.com


Khorsun Vlad

unread,
Mar 24, 2014, 8:49:47 AM3/24/14
to ru-fi...@googlegroups.com
"Sergey Mereutsa" ...
> Привет!
>
>> В 3-ке, скорее всего, fb_shutdown будет рекомендован и для обычных клиентов, не
>> только для embedded.
>
> А нельзя его воткнуть внутрь isc_detach_database() ?

Нельзя.

--
Хорсун Влад


Andrei K.

unread,
Mar 24, 2014, 8:58:16 AM3/24/14
to ru-fi...@googlegroups.com

если я вызову fb_shutdown для библиотеки fbclient.dll
ничего страшного не произойдет? или лучше не рисковать
и проверять по коду, что библиотека именно fbembed.dll?

Sergey Mereutsa

unread,
Mar 24, 2014, 9:06:12 AM3/24/14
to ru-fi...@googlegroups.com, ru-fi...@googlegroups.com
Привет!

>>> В 3-ке, скорее всего, fb_shutdown будет рекомендован и для обычных клиентов, не
>>> только для embedded.
>>
>> А нельзя его воткнуть внутрь isc_detach_database() ?

> Нельзя.

Хммм, т.е. лучше сразу запихнуть вызов этой функции в код после
отключения от базы? Или подождать-таки тройку и по результатам
действовать?

Khorsun Vlad

unread,
Mar 24, 2014, 9:25:22 AM3/24/14
to ru-fi...@googlegroups.com
"Andrei K." ...
>
> если я вызову fb_shutdown для библиотеки fbclient.dll


Так и надо делать

> ничего страшного не произойдет?

Конечно нет

> или лучше не рисковать
> и проверять по коду, что библиотека именно fbembed.dll?

Не надо проверять имя библиотеки

--
Хорсун Влад


Khorsun Vlad

unread,
Mar 24, 2014, 9:28:56 AM3/24/14
to ru-fi...@googlegroups.com
"Sergey Mereutsa" ...
> Привет!
>
>>>> В 3-ке, скорее всего, fb_shutdown будет рекомендован и для обычных клиентов, не
>>>> только для embedded.
>>>
>>> А нельзя его воткнуть внутрь isc_detach_database() ?
>
>> Нельзя.
>
> Хммм, т.е. лучше сразу запихнуть вызов этой функции в код после
> отключения от базы?

Я не уверен, что ты сможешь куда-нить подключиться после вызова fb_shutdown.
Этот вызов означает завершение работы с Firebird.

> Или подождать-таки тройку и по результатам действовать?

При чём тут тройка ? fb_shutdown появился ещё в 2.5 для гарантии корректного
завершения работы embedded движка.

--
Хорсун Влад


Dmitry A. Beloshistov

unread,
Mar 24, 2014, 9:58:39 AM3/24/14
to ru-fi...@googlegroups.com
Hi!

> Хммм, т.е. лучше сразу запихнуть вызов этой функции в код после
> отключения от базы?

> Я не уверен, что ты сможешь куда-нить подключиться после вызова fb_shutdown.
>Этот вызов означает завершение работы с Firebird.

Для прояснения - detach должен быть отдельно, а fb_shutdown - именно в конце работы программы - я правильно понял?.

Т.е. связка :
Detach() + Fb_shutdown() приведет к тому, что возможный последующий вызов attach() обломится?


WBR, Dmitry Beloshistov AKA [-=BDS=-]



Vlad Khorsun

unread,
Mar 24, 2014, 6:35:25 PM3/24/14
to ru-fi...@googlegroups.com
"Dmitry A. Beloshistov" ...
> Hi!
>
>> Хммм, т.е. лучше сразу запихнуть вызов этой функции в код после
>> отключения от базы?
>
>> Я не уверен, что ты сможешь куда-нить подключиться после вызова fb_shutdown.
>>Этот вызов означает завершение работы с Firebird.
>
> Для прояснения - detach должен быть отдельно, а fb_shutdown - именно в конце работы программы - я правильно понял?.

Да

> Т.е. связка :
> Detach() + Fb_shutdown() приведет к тому, что возможный последующий вызов attach() обломится?

Я не пробовал, зуб не дам :)

--
Хорсун Влад


Andrei K.

unread,
Apr 10, 2014, 4:23:36 AM4/10/14
to ru-fi...@googlegroups.com

Поставил вызов fb_shutdown. Уже больше недели все работает без сбоев.

Получается что софт, который без исходников, не сможет перейти
на 2.5.3. А для тех у кого есть исходники, большими буквами надо
написать, что теперь вызов fb_shutdown обязателен.
Reply all
Reply to author
Forward
0 new messages