Падение FB 1.5.2 CS при вызове UDF из FUDLIB!

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

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

Ответить
Black

Падение FB 1.5.2 CS при вызове UDF из FUDLIB!

Сообщение Black » 10 янв 2005, 13:34

Привет всем! Приобрели двухпроцессорный сервер.
После установки FB 1.5.2 CS, происходит падение сервера при вызове ф-ций (MAKEDATE, SUB_TIME, DIFFDATE) из библиотеки FUDLIB.
Если поставить FB 1.5.2 SS?, то работает без проблем.
Подскажите, как можно решить проблему в короткий срок.

С уважением, Дмитрий Воронин!

dimitr
Разработчик Firebird
Сообщения: 888
Зарегистрирован: 26 окт 2004, 16:20

Сообщение dimitr » 10 янв 2005, 16:44

Дай линк на бинарник этой либы или зашли мне ее мылом. Заодно приведи любой SQL-оператор, приводящий к падению. Я проверю и доложу диагноз.

Гость

Сообщение Гость » 10 янв 2005, 17:04

dimitr писал(а):Дай линк на бинарник этой либы или зашли мне ее мылом. Заодно приведи любой SQL-оператор, приводящий к падению. Я проверю и доложу диагноз.
http://www.ibase.ru/download/FUDLibrary-0.50.win32.zip

Код: Выделить всё

CREATE PROCEDURE TEST_DIFFDATE(
    X DATE,
    Y DATE)
RETURNS (
    RESULT INTEGER)
AS
BEGIN

result = diffdate(X, Y, 2);

END
Это просто пример. Как я понял вылетает FB, при вызове любой функции из этой библиотеки.


С уважением, Дмитрий Воронин!

dimitr
Разработчик Firebird
Сообщения: 888
Зарегистрирован: 26 окт 2004, 16:20

Сообщение dimitr » 10 янв 2005, 21:05

Либо выкинь эту библиотеку и замени ее другой, либо перекомпилируй ее сам. В ней все функции объявлены как stdcall вместо положенного cdecl. А классик оказался более чувствительным к порче стека, чем супер. Отсюда и результат.

Гость

Сообщение Гость » 11 янв 2005, 10:21

dimitr писал(а):Либо выкинь эту библиотеку и замени ее другой, либо перекомпилируй ее сам. В ней все функции объявлены как stdcall вместо положенного cdecl. А классик оказался более чувствительным к порче стека, чем супер. Отсюда и результат.
Я готов от неё отказаться, но в ней есть необходимые функции, особенно DIFFDATE, которая может возратить количество минут между двумя переменными типа TIMESTAMP. Ты не мог бы подсказать где можно найти эту информацию (понимаю, что не в тему формума, но раз уже затронули вопрос...)


С уважением, Дмитрий Воронин!

dimitr
Разработчик Firebird
Сообщения: 888
Зарегистрирован: 26 окт 2004, 16:20

Сообщение dimitr » 11 янв 2005, 10:35

У меня под рукой нет исходников RFUNC, но вроде там была подобная функция. Но IMHO быстрее и удобнее было бы перекомпилировать FUDLIB самим или связаться с автором, чтобы он собрал корректную версию.

Ответить