Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / isc_attach_database access violation / 25 сообщений из 41, страница 1 из 2
24.06.2014, 16:04:56
    #38678667
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
isc_attach_database access violation
Попробую спросить здесь.

Ситуация: утром включается сервер. На сервере стартует IB XE3 x64 (WI-V11.0.2.540) и моя служба. У службы стоит зависимость от Interbase. Служба по старту создает отдельный поток для слушания событий БД. В момент подключения к базе отгребаю ошибку
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Message: Access violation at address 0000000073FA9E8C in module 'ibclient64.dll'. Read of address 0000000000000000
Exception: 0000000073FA9E8C Module: ibclient64.dll. Method: Unknown function at gds__thread_start
Stack frames:
0000000073FA9E8C Module: ibclient64.dll. Method: Unknown function at gds__thread_start
0000000076DD1278 Module: ntdll.dll. Method: KiUserExceptionDispatcher
0000000073FA9E8C Module: ibclient64.dll. Method: Unknown function at gds__thread_start
0000000073FD6FB7 Module: ibclient64.dll. Method: Unknown function at perf_report
0000000073FC6BF6 Module: ibclient64.dll. Method: Unknown function at perf_report
0000000073F9B5F6 Module: ibclient64.dll. Method: isc_attach_database
0000000005992021 Module: rs157DBData2_64.dll. Method: IBIntf.TIBServerLibrary.isc_attach_database
00000000059AF679 Module: rs157DBData2_64.dll. Method: IBDatabase.TIBDatabase.DoConnect
000000000591B379 Module: rs157DBData2_64.dll. Method: Data.DB.TCustomConnection.SetConnected
000000000591B2E6 Module: rs157DBData2_64.dll. Method: Data.DB.TCustomConnection.Open
0000000005BCC4AA Module: rs157DBData2_64.dll. Method: UrsIBXDataImpl.TIBXDatabase.DBOpen [Line: 5, Unit Line: 297]



После перезапуска моей службы - ошибки нет. После перезапуска всего сервера ошибки нет (это самое непонятное). Все коннекты проходят через критическую секцию. Кроме Sleep перед коннектом кто-нибудь может, что-нибудь посоветовать?

С уважением, Vasilisk
...
Рейтинг: 0 / 0
24.06.2014, 22:11:01
    #38679044
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
isc_attach_database access violation
У Interbase зависимость от TCP/IP прописана?
...
Рейтинг: 0 / 0
24.06.2014, 23:26:21
    #38679082
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
isc_attach_database access violation
Basil A. SidorovУ Interbase зависимость от TCP/IP прописана?Нет. Вот так прямо из-за этого валиться в AV на клиенте?
...
Рейтинг: 0 / 0
24.06.2014, 23:41:40
    #38679091
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
isc_attach_database access violation
_Vasilisk_Вот так прямо из-за этого валиться в AV на клиенте?Ну проверить-то эту версию можно?
...
Рейтинг: 0 / 0
24.06.2014, 23:50:39
    #38679096
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
isc_attach_database access violation
Basil A. SidorovНу проверить-то эту версию можно?Можно, конечно
...
Рейтинг: 0 / 0
25.06.2014, 19:56:00
    #38680291
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
isc_attach_database access violation
Basil A. Sidorov,

При остановленной службе tcpip получаю такую ошибку
Код: sql
1.
2.
3.
TAutoDBEventServer - Message: Message: Unable to complete network request to host "localhost".
Failed to locate host machine.
The specified name was not found in the hosts file or Domain Name Services

так, что предположение было неверным
...
Рейтинг: 0 / 0
25.06.2014, 20:33:43
    #38680309
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
isc_attach_database access violation
_Vasilisk_Служба по старту создает отдельный поток для слушания событий БД. В момент подключения к базе отгребаю ошибку
- коннект к базе происходит в основном потоке, или "отдельном"?
- асинхронные события в компонентах и так доп. тредом обрабатываются, что дает ряд проблем.
- сервис будет постоянно висеть "на связи с базой", и постоянно что то слушать? Нехорошо это. Лучше бы ты сделал коннект-работа-дисконнект, не чаще раза в минуту. "Роботы", которые висят на коннекте, являются самой частой причиной длительных транзакций, препятствующих сборке мусора.
...
Рейтинг: 0 / 0
25.06.2014, 21:40:28
    #38680331
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
isc_attach_database access violation
_Vasilisk_так, что предположение было невернымЯ, вообще-то, предлагал установить зависимости для службы Interbase.
...
Рейтинг: 0 / 0
25.06.2014, 22:54:27
    #38680360
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
isc_attach_database access violation
kdvконнект к базе происходит в основном потоке, или "отдельном"?В отдельном. Все коннекты к базе происходят через критическую секцию
kdvасинхронные события в компонентах и так доп. тредом обрабатываютсяКласс по работе с событиями я полностью переписал. Почему я вызываю обработчик не в том потоке, где вызывается callback я не помню, но какие-то основания были. И весьма веские.
kdvсервис будет постоянно висеть "на связи с базой", и постоянно что то слушать?Да
kdv"Роботы", которые висят на коннекте, являются самой частой причиной длительных транзакций, препятствующих сборке мусора.Во-первых он висит на read транзакции, а во-вторых - как он может мешать сборке мусора, если он не обращается ни к каким данным, а просто слушает события?
...
Рейтинг: 0 / 0
25.06.2014, 23:21:29
    #38680374
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
isc_attach_database access violation
_Vasilisk_а во-вторых - как он может мешать сборке мусора, если он не обращается ни к каким данным, а просто слушает события?
"мешать сборке мусора" может простая транзакция, которая долго длится и не обращается ни каким данным. к read read_committed это не относится, разумеется.
Но сама идея что "транзакция мешает ... обращаясь к данным" - похожа на новый миф :-)

пошел оффтоп, но я бы посоветовал "в роботе" без надобности транзакций не стартовать, никаких, и особенно проверить, что они действительно не стартуют, потому что в компонентах это может быть скрыто.
...
Рейтинг: 0 / 0
25.06.2014, 23:30:22
    #38680377
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
isc_attach_database access violation
kdvНо сама идея что "транзакция мешает ... обращаясь к данным" - похожа на новый миф :-)Значит я таки криво прочитал доку.
kdvя бы посоветовал "в роботе" без надобности транзакций не стартоватьТак и есть. В нем только эта транзакциия и это соединение "вечные". Остальные коннекты стартуют по мере надобности. Но вопрос не о том.

Тут идея появилась, а, что если взять исходники fbclient и посмотреть, что там происходить в isc_attach_database и какая проблема может быть в isc__start_thread? Или FB и IB уже сильно разбежались и это бесперспективно?
...
Рейтинг: 0 / 0
25.06.2014, 23:37:09
    #38680379
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
isc_attach_database access violation
_Vasilisk_Или FB и IB уже сильно разбежались и это бесперспективно?

Именно так. В FB столько фиксилось как раз в районе событий, что ожидать совпадения
исходников можно только в одном случае: они тупо передирают наше дерево.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
25.06.2014, 23:50:09
    #38680381
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
isc_attach_database access violation
_Vasilisk_Служба по старту создает отдельный поток для слушания событий БД.
Ищи гонки потоков, приводящие к обращению к методам ещё не созданной TIBDatabase.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
26.06.2014, 00:16:51
    #38680387
Гаджимурадов Рустам
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
isc_attach_database access violation
_Vasilisk_ ,

Проверять наличие службы IB не пробовал?
Sleep c какой задержкой помогает?
И попробуй подключаться без event-ов.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
26.06.2014, 00:29:57
    #38680395
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
isc_attach_database access violation
Dimitry SibiryakovВ FB столько фиксилось как раз в районе событийУ меня до событий дело не доходит. Отваливается сам коннект.
Dimitry SibiryakovИщи гонки потоков, приводящие к обращению к методам ещё не созданной TIBDatabase.Текущий алгоритм работы
1. По старту сервиса, стартуем новый поток
2. В созданном потоке создаем TIBDatabase
3. Указываем имя базы
4. Подключаемся к базе
5. Запускаем слушание событий.

Проблема у меня в 4 пункте

Гаджимурадов РустамПроверять наличие службы IB не пробовал?Не понял. В смысле проверять запущена ли она? Так зависимость же стоит
Гаджимурадов РустамSleep c какой задержкой помогает?Sleep еще не пробовал. Из-за того, что ошибка нестабильна. Завтра запущу тест с циклической перезагрузкой сервера и там уже буду экспериментировать
Гаджимурадов РустамИ попробуй подключаться без event-ов.У меня вначале коннект, потом event'ы. Коннект не проходит. Никакие event'ы не запускаются
...
Рейтинг: 0 / 0
26.06.2014, 01:19:02
    #38680400
Гаджимурадов Рустам
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
isc_attach_database access violation
Да забей ты на потоки и на транзакции, не в них дело.

_Vasilisk_> Не понял. В смысле проверять запущена ли она? Так зависимость же стоит

Ну мало ли что там не так со службами, сетевой подсистемой,
задержками и пр. Просто проверь, есть ли сервер в процессах.

> У меня вначале коннект, потом event'ы. Коннект не проходит.
> Никакие event'ы не запускаются

Да, это я стормозил, подписка не сразу. Сорри.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
26.06.2014, 01:38:14
    #38680402
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
isc_attach_database access violation
_Vasilisk_3. Указываем имя базы
Протокол какой? Локальный у IB работает хреновенько...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
26.06.2014, 02:58:24
    #38680415
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
isc_attach_database access violation
Dimitry SibiryakovПротокол какой?TCP
...
Рейтинг: 0 / 0
26.06.2014, 03:17:11
    #38680416
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
isc_attach_database access violation
_Vasilisk_IB XE3 x64 (WI-V11.0.2.540)
я вот что подумал - это ведь Update 2, причем билд должен быть не 540, а 541
и есть еще
Update 3 - 11.03.665
Update 4 - 11.0.4.817

может, стоит просто сделать апдейт?
правда, в resolved defects я ничего такого не вижу
http://docs.embarcadero.com/products/interbase/IBXE3Update4/Readme.html#new00E
...
Рейтинг: 0 / 0
26.06.2014, 16:47:01
    #38681048
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
isc_attach_database access violation
Решил ничего не делать, а вначале добиться стабильного повторения ошибки. Написал две службы (х32 и х64), которые по старту коннектятся к серверу, пишут информацию в лог и завершаются. Поставил циклическую перезагрузку всего сервера и стал ждать. Было произведено 25 перезагрузок, за это время ошибка появилась только один раз. Но - появилась она только в рабочей службе. Тестовые отработали без ошибок. А теперь логи
Тестовая служба
Код: sql
1.
2.
3.
4.
5.
6.
[2014-06-26 14:57:35.158] ========================
[2014-06-26 14:57:35.158] Start ibConTest64
[2014-06-26 14:57:35.158] TryConnect: 1
[2014-06-26 14:57:38.481] OK
[2014-06-26 14:57:38.543] Stop
[2014-06-26 14:57:38.543] ========================


Рабочая служба
Код: sql
1.
2.
3.
[14:57:39.776] TAutoDBEventServer - Before connect 
[14:57:45.641] TAutoDBEventServer - Message: Message: Access violation at address 0000000074739E8C in module 'ibclient64.dll'. Read of address 0000000000000000
Exception: 0000000074739E8C Module: ibclient64.dll. Method: Unknown function at gds__thread_start


Как видно из логов - тестовая служба запустилась раньше и смогла подключиться к серверу. А еще меня напрягает, что попытка соединения происходила целых 6 секунд

Отличия - тестовая служба напрямую работает с TIBDataBase, а рабочая создает СОМ-объект и уже в этом объекте идет работа с TIBDataBase.

Сейчас перепишу тест на использование моего СОМ-объекта.

По крайней мере предположение о зависимости интербейза от службы tcpip отпало окончательно
...
Рейтинг: 0 / 0
26.06.2014, 18:51:28
    #38681191
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
isc_attach_database access violation
_Vasilisk_рабочая создает СОМ-объект и уже в этом объекте идет работа с
TIBDataBase.
Ну ты, блин, извращенец...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
26.06.2014, 19:22:18
    #38681218
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
isc_attach_database access violation
Dimitry SibiryakovНу ты, блин, извращенец...Аналог трехзвенки
...
Рейтинг: 0 / 0
26.06.2014, 19:49:51
    #38681236
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
isc_attach_database access violation
_Vasilisk_Аналог трехзвенкиИ что этот "аналог" упрощает???
...
Рейтинг: 0 / 0
27.06.2014, 03:45:22
    #38681378
наивный
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
isc_attach_database access violation
Что-то больно мудрёно:
СОМ-объект в отдельном потоке...
наивно навскидку: с coinitialze все в поряде?
...
Рейтинг: 0 / 0
27.06.2014, 14:33:32
    #38681921
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
isc_attach_database access violation
наивныйс coinitialze все в поряде?Да
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / isc_attach_database access violation / 25 сообщений из 41, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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