| 
		
			| Зависание событий в 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:42 isc_event_block() не делает ничего кроме выделения памяти и копирования в него переданных строк. Стэк, скорее всего, неправильно показывает название функции. Есть у него привычка брать ближайшую "снизу". Надо брать отладочную информацию для конкретной версии клиента и смотреть правильными инструментами.Да согласен, скорее всего так.
 Трейс в целом показывает висение на ожидании (скорее всего ответа сервера):
 
 
 SD писал(а) Tue, 05 August 2025 00:42ntdll! ZwWaitForSingleObject+12
KERNELBASE! WaitForSingleObject+18
fbclient! fb_shutdown+184848
fbclient! gds__alloc+63
fbclient! isc_event_block+90
Тут есть 2 ньюанса. Во первых такой косяк вылез только на 3.0, на 2.0 такого не было.PS: Работа с событиями местами неочевидна и заморочена, там очень легко облажаться.
 
 Во вторых рестарт проги не помогает в этот момент. Так что видимо что то в сервере ломается.
 
 Ps. Жалко что новые версии FB не поддерживают относительно старые OSD. Затрудняет миграцию.
 
 [Обновления: Tue, 05 August 2025 21:00] Известить модератора |  
	|  |  | 
	|  | 
	|  | 
	|  | 
	|  |