Зависание событий в FB 3.0 [сообщение #6193] |
Mon, 04 August 2025 20:13  |
avp
Сообщений: 89 Зарегистрирован: October 2023
|
Member |
|
|
ПО в виде непрерывно работающей службы работает с FB на одном компе. Изредка выплывает такая проблема.
Со стародавних времён в ПО встроена проверка что события FB работают нормально - просто в цикле постятся события и проверяется что обработчик срабатывает.
Вот в один момент события перестают работать. Об этом пишется в лог.
В этом случае делается реконнект к базе и заново регистрация событий.
Но по логу эта регистрация виснет внутри fbclient. Стэк трейс показывает позицию начиная isc_event_block+90 и глубже.
Ок. В этом случае сделано что служба просто перезапускается.
Так вот после перезапуска та же самая фигня - к базе подключается, но регистрация событий виснет так же в isc_event_block+90.
И так несколько раз. Пока юзеры не ребутят сервер - рестартовать только FB они пока не умеют.
Вопрос что со всем этим делать? Принудительно рестартовать службу FB?
Может в новых версиях FB что то такое исправлялось?
|
|
|
|
Re: Зависание событий в FB 3.0 [сообщение #6195 является ответом на сообщение #6194] |
Tue, 05 August 2025 00:42   |
SD
Сообщений: 452 Зарегистрирован: August 2022
|
Senior Member |
|
|
isc_event_block() не делает ничего кроме выделения памяти и копирования в него переданных строк. Стэк, скорее всего, неправильно показывает название функции. Есть у него привычка брать ближайшую "снизу". Надо брать отладочную информацию для конкретной версии клиента и смотреть правильными инструментами.
PS: Работа с событиями местами неочевидна и заморочена, там очень легко облажаться.
[Обновления: Tue, 05 August 2025 00:44] Известить модератора
|
|
|
Re: Зависание событий в FB 3.0 [сообщение #6197 является ответом на сообщение #6195] |
Tue, 05 August 2025 21:00   |
avp
Сообщений: 89 Зарегистрирован: October 2023
|
Member |
|
|
SD писал(а) Tue, 05 August 2025 00:42isc_event_block() не делает ничего кроме выделения памяти и копирования в него переданных строк. Стэк, скорее всего, неправильно показывает название функции. Есть у него привычка брать ближайшую "снизу". Надо брать отладочную информацию для конкретной версии клиента и смотреть правильными инструментами.
Да согласен, скорее всего так.
Трейс в целом показывает висение на ожидании (скорее всего ответа сервера):
ntdll! ZwWaitForSingleObject+12
KERNELBASE! WaitForSingleObject+18
fbclient! fb_shutdown+184848
fbclient! gds__alloc+63
fbclient! isc_event_block+90
SD писал(а) Tue, 05 August 2025 00:42
PS: Работа с событиями местами неочевидна и заморочена, там очень легко облажаться.
Тут есть 2 ньюанса. Во первых такой косяк вылез только на 3.0, на 2.0 такого не было.
Во вторых рестарт проги не помогает в этот момент. Так что видимо что то в сервере ломается.
Ps. Жалко что новые версии FB не поддерживают относительно старые OSD. Затрудняет миграцию.
[Обновления: Tue, 05 August 2025 21:00] Известить модератора
|
|
|
|
|
|
|