Vista SP1 + Firebird 2.1 embedded + Delphi 2007 + FIBPlus6.7

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

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

Ответить
drbasic
Сообщения: 8
Зарегистрирован: 15 май 2008, 06:02

Vista SP1 + Firebird 2.1 embedded + Delphi 2007 + FIBPlus6.7

Сообщение drbasic » 15 май 2008, 06:20

С Embedded Firebird 2.0.3 и 2.1 происходит следующее:
На машине с Vista SP1 новый тестовый проект, который подключается к БД через компоненты FIBPlus зависает при старте без отладчика, а под отладчиком прерывается с ошибкой, но стека вызовов не показывает. Ошибка происходит при открытии БД. Другой проект работает номрально, но при закрытии (как я понял при выгрузке первой DLL) происходит переполнение стека.
В XP, Vista без SP1 все работает замечательно.
База данных через IBExpert открывается без проболем. Серверов firebird на машине не установлено, все происходит через ту же самую библиотеку. Никаких внешних UDF не используется.

Firebird 1.5.5 работает нормально.

Дополнительно стоит NOD32, Agnitium Firewall, VS 2008. Больше "особого" софта на компе нет.

Есть идеи "кто виноват" ?

stix-s
Заслуженный разработчик
Сообщения: 557
Зарегистрирован: 13 дек 2005, 11:52

Re: Vista SP1 + Firebird 2.1 embedded + Delphi 2007 + FIBPlu

Сообщение stix-s » 15 май 2008, 06:40

drbasic писал(а): Серверов firebird на машине не установлено, все происходит через ту же самую библиотеку. Никаких внешних UDF не используется.
О какой библиотеке вообще речь идет?
drbasic писал(а): Дополнительно стоит NOD32, Agnitium Firewall, VS 2008. Больше "особого" софта на компе нет.
А трудно поотключать и проверить?

drbasic
Сообщения: 8
Зарегистрирован: 15 май 2008, 06:02

Сообщение drbasic » 15 май 2008, 07:08

1 Библиотека имеется ввиду fbembed.dll, переименованная в gds32.dll
2 "Отключать" установленный VisualStudio 2008, как вы понимаете проблематично.

drbasic
Сообщения: 8
Зарегистрирован: 15 май 2008, 06:02

Сообщение drbasic » 15 май 2008, 07:16

Если IBExpert работает, значит дело видимо все-таки в Delphi 2007 + FIBPlus6.7.

падение происходит в
procedure TFIBDatabase.Open;

в строке:
isc_res:=Call(FClientLibrary.isc_attach_database(SV, Length(FDBName),
PChar(FDBName), @FHandle,
FDPBLength, FDPB), False);

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 15 май 2008, 10:11

очень интересно. и почему же IBExpert работает, а ваше приложение - нет?

drbasic
Сообщения: 8
Зарегистрирован: 15 май 2008, 06:02

Сообщение drbasic » 15 май 2008, 10:27

Была идея что загружается несовместимая библиотека msvcr80.dll. путем хитрых манипуляций с манифестами я заставил таки загрузится ту, которая распространяется с сервером, но результат не изменился.

hvlad
Разработчик Firebird
Сообщения: 1244
Зарегистрирован: 21 мар 2005, 10:48

Сообщение hvlad » 15 май 2008, 10:31

drbasic писал(а):Была идея что загружается несовместимая библиотека msvcr80.dll. путем хитрых манипуляций с манифестами я заставил таки загрузится ту, которая распространяется с сервером, но результат не изменился.
Не нужно хитрых манипуляций. Нужно просто корректно установить ран-тайм от VS2005 (без SP1)

hvlad
Разработчик Firebird
Сообщения: 1244
Зарегистрирован: 21 мар 2005, 10:48

Сообщение hvlad » 15 май 2008, 10:39

У тебя embedded корректно установлен, по отношению к запускаемой из-по дельфи программе ?

drbasic
Сообщения: 8
Зарегистрирован: 15 май 2008, 06:02

Сообщение drbasic » 15 май 2008, 10:45

Конечно установлено правильно. Скопированный каталог работает на XP и висте без SP1.

drbasic
Сообщения: 8
Зарегистрирован: 15 май 2008, 06:02

Сообщение drbasic » 15 май 2008, 10:50

Firebird нужен CRT версии 8.0.50608.0.
эта версия перенаправляется на самую новую что установлена в системе, к сожалению номер не помню, а посмотреть смогу только вечером, но оканчивается она на .1477

И требуемая версия CRT тоже установлена в системе, но загрузчик предпочитает грузить самую новую.

drbasic
Сообщения: 8
Зарегистрирован: 15 май 2008, 06:02

Сообщение drbasic » 16 май 2008, 05:35

В свежеустановленной виртульной машине Vista SP1 все заработало.
Отключение антивируса и файрвола на физической машине ничего не дало.
Есть идея поставить в свежую Vista sp1 апдейты, которых было не так много, и затем доставять остальной софт, чтобы выяснить "Кто виноват".

Antoxa
Сообщения: 169
Зарегистрирован: 06 июл 2006, 10:53

Сообщение Antoxa » 16 май 2008, 12:35

У меня Vista + Firebird 2.0.3 embedded + Delphi 2007(IBX) - работает! Может дело в FIB? Попробуй ч-з IBX :wink:

drbasic
Сообщения: 8
Зарегистрирован: 15 май 2008, 06:02

Сообщение drbasic » 18 май 2008, 11:04

Разобрался в причине.
Моя программа построена по модульному принципу, и потому вполне естественно, что в ней есть подкаталог Plugins. Оказывается Firebird без спроса загружает dll, находящиеся в этом каталоге и пытается что-то с ними делать, что и приводит к глюкам, ведь эти dll для него не предназначались. При этом если эти dll уже были загружены, то "расплата" приходит при закрытии приложения, если еще не были, то при загрузке.
Теперь самое интересное, почему падал тестовый проект. В него я скопировал исполняемые файлы firebird из своего рабочего, и при этом в firebird.conf был прописан каталог с рабочим проектом. Firebird загружается, смотрит где его рабочий каталог и начинает радостный загружать dll из Plugins, после чего героически падает.
Мораль: подкаталог Plugins принадлежит Firebird. Для своих нужд я его использовать не могу.
Непонятки: почему глюк проявился только на одной висте из 3х тестовых?
Вопрос: как намекнуть Firebird, чтоб он не трогал dll в Plugins?

Ответить