иногда падает процедура, FB2.5.25784.

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

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

VitalikIsVitalik
Сообщения: 80
Зарегистрирован: 15 ноя 2009, 11:54

иногда падает процедура, FB2.5.25784.

Сообщение VitalikIsVitalik » 23 ноя 2009, 16:01

Иногда падает процедура, с сообщением: Unsucessful execution caused system error that does not preclude successful execution of subsequent statments. At procedure Test Line:37, col:4. Данные в таблицах одни и те же. Если надо пришлю скрипт создания тестовой БД.

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

CREATE OR ALTER PROCEDURE TEST (
    param NUMERIC(10,0))
RETURNS (
    o_result INTEGER)
AS
DECLARE VARIABLE max_obl INTEGER = 0;
DECLARE VARIABLE q_user INTEGER = 0;
DECLARE VARIABLE is_need_blob INTEGER;
DECLARE VARIABLE offc_new INTEGER;
DECLARE VARIABLE group_id INTEGER;
BEGIN
   SELECT UserNew
   FROM Users
    WHERE ID = :param
   INTO :q_user;

   SELECT COALESCE(MAX(Obl), 0)
   FROM TypesBlob AS ts
    WHERE ts.MemberType = :q_user
     AND ((ts.Offc <> 0 AND ts.MemberID = 0)
          OR(ts.Offc = 0 AND EXISTS(SELECT 1
                                       FROM Members AS g
                                        WHERE g.GroupID = ts.MemberID)))
   INTO :max_obl;

   IF (max_obl = 0) THEN
   BEGIN
      o_result = 0;
      SUSPEND;
      EXIT;
   END

   is_need_blob = 0;

   FOR SELECT t.Offc, t.MemberID
   FROM TypesBlob AS t
    WHERE t.MemberType = :q_user
     AND (t.Offc <> 0 OR(EXISTS(SELECT g.Member
                                   FROM Members AS g
                                    WHERE g.GroupID = t.MemberID)))
   ORDER BY Offc ASC
   INTO :offc_new, :group_id
   DO
   BEGIN
      IF (NOT EXISTS(SELECT s.Offc
                     FROM ListBlobs AS s
                      WHERE s.id = :param
                       AND((s.Offc = :offc_new)
                            OR(s.Offc = ANY(SELECT g.Member
                                               FROM Members AS g
                                                WHERE g.GroupID = :group_id))))) THEN - РУГАЕТСЯ ВОТ НА ЭТО
      BEGIN
         is_need_blob = 1;
      END
   END

   IF (is_need_blob = 0) THEN
   BEGIN
      o_result = 1;
      SUSPEND;
      EXIT;
   END
   ELSE
   BEGIN
      o_result = -178;
      SUSPEND;
      EXIT;
   END
END^

VitalikIsVitalik
Сообщения: 80
Зарегистрирован: 15 ноя 2009, 11:54

Re: иногда падает процедура, FB2.5.25784.

Сообщение VitalikIsVitalik » 23 ноя 2009, 16:57

После этого невозможно сделать Select к таблице TYPESBLOB, IBExpert виснет.

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

Re: иногда падает процедура, FB2.5.25784.

Сообщение hvlad » 23 ноя 2009, 20:03

Что в firebird.log ?

VitalikIsVitalik
Сообщения: 80
Зарегистрирован: 15 ноя 2009, 11:54

Re: иногда падает процедура, FB2.5.25784.

Сообщение VitalikIsVitalik » 24 ноя 2009, 14:04

Ничего, может нет какой-нибудь системной переменной?

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

Re: иногда падает процедура, FB2.5.25784.

Сообщение hvlad » 24 ноя 2009, 14:14

Воспроизводимый пример можешь сделать ?

VitalikIsVitalik
Сообщения: 80
Зарегистрирован: 15 ноя 2009, 11:54

Re: иногда падает процедура, FB2.5.25784.

Сообщение VitalikIsVitalik » 24 ноя 2009, 14:19

VITALIK (Server) Tue Nov 24 13:19:07 2009
INET/inet_error: read errno = 10054

VitalikIsVitalik
Сообщения: 80
Зарегистрирован: 15 ноя 2009, 11:54

Re: иногда падает процедура, FB2.5.25784.

Сообщение VitalikIsVitalik » 24 ноя 2009, 14:29

Vitalik (Server) Tue Nov 24 13:20:11 2009
Shutting down the server with 2 active connection(s) to 1 database(s), 0 active service(s)


Vitalik (Server) Tue Nov 24 13:20:17 2009
SERVER/process_packet: broken port, server exiting


Vitalik (Server) Tue Nov 24 13:21:26 2009
Database: TESTBASE
deadlock
internal Firebird consistency check (error during savepoint backout (290), file: exe.cpp line: 4126)

VitalikIsVitalik
Сообщения: 80
Зарегистрирован: 15 ноя 2009, 11:54

Re: иногда падает процедура, FB2.5.25784.

Сообщение VitalikIsVitalik » 24 ноя 2009, 14:53

Могу скинуть скрипты создания базы и хп.
Есть ньюанс, в реальном приложении создаётся много коннектов в БД из разных потоков.

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

Re: иногда падает процедура, FB2.5.25784.

Сообщение hvlad » 24 ноя 2009, 15:28

Ты понимаешь, что такое воспроизводимый пример ?
Можешь его создать ?

Мне всё равно какие там скрипты и приложения.
Мне нужны файлы и инструкция - как с их помощью воспроизвести ситуацию.

VitalikIsVitalik
Сообщения: 80
Зарегистрирован: 15 ноя 2009, 11:54

Re: иногда падает процедура, FB2.5.25784.

Сообщение VitalikIsVitalik » 24 ноя 2009, 17:14

Я заметил что это проблема возникает когда я создам соединение и ничего не делаю.
В старых версиях были CONNECTION TIMEOUT, DUMMY PACKET INTERVAL но в firebird.conf не нашёл таких параметров.
Как быть в 2.5?

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

Re: иногда падает процедура, FB2.5.25784.

Сообщение hvlad » 24 ноя 2009, 18:17

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

VitalikIsVitalik
Сообщения: 80
Зарегистрирован: 15 ноя 2009, 11:54

Re: иногда падает процедура, FB2.5.25784.

Сообщение VitalikIsVitalik » 01 дек 2009, 17:36

Тестовое приложение пока выслать не могу.
У Вас не было проблем с ADO-ным пулом коннектов? Точно ситуацию воспроизвести не могу, но проблемы начинаются именно тогда, когда, спустя примерно 1 м. 20.сек начинают отваливаться неактивные коннкты, процедуры валяться на пустом месте.

VitalikIsVitalik
Сообщения: 80
Зарегистрирован: 15 ноя 2009, 11:54

Re: иногда падает процедура, FB2.5.25784.

Сообщение VitalikIsVitalik » 02 дек 2009, 10:41

В 2.1 не падает.

VitalikIsVitalik
Сообщения: 80
Зарегистрирован: 15 ноя 2009, 11:54

Re: иногда падает процедура, FB2.5.25784.

Сообщение VitalikIsVitalik » 03 дек 2009, 10:26

Во всех процедурах указывалась именно 37-я строка.
Unsucessful execution caused system error that does not preclude successful execution of subsequent statments. At procedure Test Line:37, col:4

Более точная последовательность действий:
1. Запускаю приложение.
2. Создаётся несколько коннектов(3,4), далее все удаляются(pConnection->Close(); pConnection.Release()), кроме первого. После удаления они "висят" как неактивные(смотрю FBScanner-ом), спустя 1м. 20сек. убиваются, остаётся один первый.
3. Создаю коннект(в приложении), выполняю процедуру, вываливается сообщение об ошибке: "Unsucessful execution caused system error that does not preclude successful execution of subsequent statments. At procedure Test Line:37, col:4".

ADO, IBProviderFree3.
В строке подключения OLE DB Services=-1.

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

Re: иногда падает процедура, FB2.5.25784.

Сообщение hvlad » 03 дек 2009, 10:47

У тебя клиент и firebird.msg правильные ? Друг-другу и серверу соответствуют ?

VitalikIsVitalik
Сообщения: 80
Зарегистрирован: 15 ноя 2009, 11:54

Re: иногда падает процедура, FB2.5.25784.

Сообщение VitalikIsVitalik » 03 дек 2009, 12:32

Да, всё из Firebird-2.5.0.25784-0_Win32.zip.
Что отвечает за путь к firebird.msg, в реестре ничего не нашёл?

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

Re: иногда падает процедура, FB2.5.25784.

Сообщение hvlad » 03 дек 2009, 15:01

Сдаётся мне, провайдер или прикладной код не весь текст ошибки показывает.

VitalikIsVitalik
Сообщения: 80
Зарегистрирован: 15 ноя 2009, 11:54

Re: иногда падает процедура, FB2.5.25784.

Сообщение VitalikIsVitalik » 03 дек 2009, 15:10

В момент вылета процедуры на клиенте :Источник=IBProvider.3.Free Описание=Ошибка выборки данных результирующего множества At procedure 'TEST1' line: 37, col: 4.At procedure 'TEST2' line: 162
col: 1 , ловлю комовское исключение.
После захожу в IBExpert и пытаюсь выполнить эту же процедуру с теми же параметрами:Unsucessful execution caused system error that does not preclude successful execution of subsequent statments. At procedure Test2 Line:37, col:4.

На клиенте вылазит когда делаю: recordSet->MoveFirst(), raw_Execute отрабатывает нормально.

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

Re: иногда падает процедура, FB2.5.25784.

Сообщение hvlad » 03 дек 2009, 15:48

VitalikIsVitalik писал(а):В момент вылета процедуры на клиенте :Источник=IBProvider.3.Free Описание=Ошибка выборки данных результирующего множества At procedure 'TEST1' line: 37, col: 4.At procedure 'TEST2' line: 162
col: 1 , ловлю комовское исключение.
После захожу в IBExpert и пытаюсь выполнить эту же процедуру с теми же параметрами:Unsucessful execution caused system error that does not preclude successful execution of subsequent statments. At procedure Test2 Line:37, col:4.
То у тебя "'TEST1' line: 37, col: 4", то "Test2 Line:37, col:4" - ты уж определись.
VitalikIsVitalik писал(а):На клиенте вылазит когда делаю: recordSet->MoveFirst(), raw_Execute отрабатывает нормально.
Я понятия не имею, что делают эти методы.

Без примера ничем помочь не могу

VitalikIsVitalik
Сообщения: 80
Зарегистрирован: 15 ноя 2009, 11:54

Re: иногда падает процедура, FB2.5.25784.

Сообщение VitalikIsVitalik » 04 дек 2009, 15:19

Фаербёрду всё равно, если к нему, из одного процесса в разных потоках создаётся много коннектов?
Нужны ли исходники примера?
Если что, куда его высылать?
Последний раз редактировалось VitalikIsVitalik 04 дек 2009, 15:53, всего редактировалось 2 раза.

Ответить