unsuccessful execution caused by system error ...

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

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

Ответить
Crazy Bee
Сообщения: 1
Зарегистрирован: 29 май 2008, 12:32

unsuccessful execution caused by system error ...

Сообщение Crazy Bee » 29 май 2008, 12:45

Собственно.

Сервер Firebird 1.5.4
ОС любая (пробовали)
набор UDF (rfunc)

Клиентское приложение (C++ Builder + FibPlus)
ОС тоже любая

Сервер и клиент ставим на одну станцию и подключение через localhost

Из клиентского приложения запускается некая хранимая процедура, выполняющая update/insert в некий набор таблиц.

На некоторых БД все отрабатывает правильно и без проблем.

Проблема в том, что на некоторых БД в процессе работы вылетает следующее сообщение:
unsuccessful execution caused by system error that does not preclude successful execution of subsequent statements. Connection lost to database


Пробовали отработать процедуру из EMS SQL Manager, сообщения нет, но она не выполняется.

Открываем firebird.log
Читаем

IT-DEP-01 (Server) Thu May 29 12:25:54 2008
The user defined function: DIV
referencing entrypoint: fn_div
in module: rfunc
caused the fatal exception: Integer divide by zero.
The code attempted to divide an integer value
by an integer divisor of zero.
This exception will cause the Firebird server
to terminate abnormally.

IT-DEP-01 (Server) Thu May 29 12:25:54 2008
Integer divide by zero.
The code attempted to divide an integer value
by an integer divisor of zero.
This exception will cause the Firebird server
to terminate abnormally.

IT-DEP-01 (Server) Thu May 29 12:25:54 2008
Integer divide by zero.
The code attempted to divide an integer value
by an integer divisor of zero.
This exception will cause the Firebird server
to terminate abnormally.

IT-DEP-01 (Client) Thu May 29 12:25:54 2008
C:\Program Files\Firebird\Firebird_1_5\bin\fbserver.exe: terminated abnormally (4294967295)


IT-DEP-01 (Client) Thu May 29 12:25:55 2008
Guardian starting: C:\Program Files\Firebird\Firebird_1_5\bin\fbserver.exe


Действительно, в хранимой процедуре используется UDF DIV

НО. до каждого ее вызова (в нескольких точках) перепроверяются значения используемых ею переменных (нам достаточно выставить их в 1, если хоть один равен 0)

Кто может подсказать, где копать? и главное, какой лопатой?

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

Re: unsuccessful execution caused by system error ...

Сообщение stix-s » 29 май 2008, 13:28

Crazy Bee писал(а):
Кто может подсказать, где копать? и главное, какой лопатой?
В исходниках UDF, вестимо

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

Re: unsuccessful execution caused by system error ...

Сообщение Merlin » 29 май 2008, 19:36

Crazy Bee писал(а): НО. до каждого ее вызова (в нескольких точках) перепроверяются значения используемых ею переменных (нам достаточно выставить их в 1, если хоть один равен 0)
В ХП нулл не равен нулю, а внутри УДФ он 0.

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Re: unsuccessful execution caused by system error ...

Сообщение WildSery » 30 май 2008, 10:28

Merlin писал(а):В ХП нулл не равен нулю, а внутри УДФ он 0.
Это смотря какая UDF ;)

Ответить