Access Violation in gds32.dll в Yaffil + IBO

Access Violation, некорректное выполнение запросов или вызовов API, ошибки утилит командной строки, в общем все, что вам мешает работать

Модераторы: kdv, dimitr

Ответить
Alex Prodigy
Сообщения: 17
Зарегистрирован: 25 янв 2006, 05:33

Access Violation in gds32.dll в Yaffil + IBO

Сообщение Alex Prodigy » 25 янв 2006, 11:54

Привет всем!
Замучал AV в gds32.dll...
При старте формы делаются запросы к базе (загрузка настроек юзера, сохранение текущего запроса, проверка прав юзера на таблицу и поля таблицы). При закрытии формы - сохраняются настройки юзера.
Проблема такая - после нескольких открытий/закрытий - AV in gds32.dll :(
Предположительно, происходит это после отработки загрузки настроек, т.е. после него ЛЮБОЙ запрос (да хоть внутренний IBO-шный) приводит к AV и последующему зависанию...
Кстати, AV может и не выводиться юзеру (в Дэлфи - всегда выводится), а сразу виснет...
Причём не помогает даже Halt в случае exception'а :(

Повторяю - конкретного места сбоя я не нашёл, AV может возникнуть, а может и нет...

Запросы в общем-то простые... типа 'select * from table' и 'select fields from table where simple_conditions'...
но поля, по которым производится поиск при загрузке/сохранении настроек непроиндексированы (это важно?)

Что это, о великие гуру ИБ?

Сервер: Yaffil 1.3.0.885 Classic
Компоненты доступа к IB: IBO 4.2Ie под Delphi 7

Если что-то ещё понадобится - спрашивайте, отвечу (начиная с 26.01.2006, а то уже раб. день у меня закончился)
Последний раз редактировалось Alex Prodigy 26 янв 2006, 02:56, всего редактировалось 1 раз.

Merlin
Динозавр IB/FB
Сообщения: 1502
Зарегистрирован: 27 окт 2004, 11:44

Сообщение Merlin » 25 янв 2006, 12:24

А версия gds32.dll версии сервера точно соответствует? Или борландовый от IB5.0, что встал вместе с Delphi?

Alex Prodigy
Сообщения: 17
Зарегистрирован: 25 янв 2006, 05:33

Access Violation in gds32.dll в Yaffil + IBO

Сообщение Alex Prodigy » 26 янв 2006, 02:35

Merlin
А версия gds32.dll версии сервера точно соответствует? Или борландовый от IB5.0, что встал вместе с Delphi?
Точно соответствует. Родная - билд 885, как у сервера.

Alex Prodigy
Сообщения: 17
Зарегистрирован: 25 янв 2006, 05:33

Access Violation in gds32.dll в Yaffil + IBO

Сообщение Alex Prodigy » 27 янв 2006, 08:13

Проверил на билде 889 - то же самое :(
Может, это IBO?

Merlin
Динозавр IB/FB
Сообщения: 1502
Зарегистрирован: 27 окт 2004, 11:44

Сообщение Merlin » 27 янв 2006, 12:41

Лично я встречал AV в gds32 только при вызове нескольких исполняемых SP с разным количеством выходных параметров в одной транзакции в борландовом клиенте. В FB пофиксили ещё в 1, так что в Дятле по идее тоже не должно быть. Если получится сделать воспроизводимый тест, надо обратиться к Олегу, а по стуку в подвале он вряд ли что сможет сделать.

Merlin
Динозавр IB/FB
Сообщения: 1502
Зарегистрирован: 27 окт 2004, 11:44

Сообщение Merlin » 27 янв 2006, 17:05

Кстати, о птичках. Пока вкушал хлеб насущный, вспомнил ещё один популярный резон - несериализованная работа из нескольких потоков через одно соединение.

Alex Prodigy
Сообщения: 17
Зарегистрирован: 25 янв 2006, 05:33

Access Violation in gds32.dll в Yaffil + IBO

Сообщение Alex Prodigy » 30 янв 2006, 02:43

Кстати, о птичках. Пока вкушал хлеб насущный, вспомнил ещё один популярный резон - несериализованная работа из нескольких потоков через одно соединение.
А это что за зверь?
Коннект один, транзакции у IBO автоматические. Кстати, Read Commited у транзакции, если что...
Т.е. грубо говоря, я просто делаю Connect и всё.

Если вернуться к нашим баранам, то с большой вероятностью AV вылазит после сохранения (!) настроек, а не восстановления, как я думал. Т.е. сохранение срабатывает, восстановление тоже, а вот любой следующий - AV :(
Сохранение и восстановление делается запросом select поля from table where условия... С той лишь разницей, что идёт чтение+сохранение записи и просто чтение соответственно...
Сейчас переделываю сохранение в процедуру, надеюсь поможет...

Alex Prodigy
Сообщения: 17
Зарегистрирован: 25 янв 2006, 05:33

Access Violation in gds32.dll в Yaffil + IBO

Сообщение Alex Prodigy » 31 янв 2006, 10:32

Хм...
Уж не знаю, в чём дело, но склоняюсь к тому, что в компонентах IBO...
Переделал запрос в хранимую процедуру - AV исчез...
хотя процедуру выполняю через те же IBO...
мистика, прям :)

В принципе, вопрос исчерпан, но если кто-нибудь когда-нибудь узнает 100%-но, из-за чего всё-таки мог быть тот AV, милости прошу в пм ;) ради интереса... :roll:

Ответить