Страница 1 из 1

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

Добавлено: 15 май 2008, 06:20
drbasic
С 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. Больше "особого" софта на компе нет.

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

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

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

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

Добавлено: 15 май 2008, 07:16
drbasic
Если IBExpert работает, значит дело видимо все-таки в Delphi 2007 + FIBPlus6.7.

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

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

Добавлено: 15 май 2008, 10:11
kdv
очень интересно. и почему же IBExpert работает, а ваше приложение - нет?

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

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

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

Добавлено: 15 май 2008, 10:45
drbasic
Конечно установлено правильно. Скопированный каталог работает на XP и висте без SP1.

Добавлено: 15 май 2008, 10:50
drbasic
Firebird нужен CRT версии 8.0.50608.0.
эта версия перенаправляется на самую новую что установлена в системе, к сожалению номер не помню, а посмотреть смогу только вечером, но оканчивается она на .1477

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

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

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

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