powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / 3.0 SuperCLASSIC: gds=335544842 на вершине стека вызовов, стек явно обрезанный. Why ?
1 сообщений из 1, страница 1 из 1
3.0 SuperCLASSIC: gds=335544842 на вершине стека вызовов, стек явно обрезанный. Why ?
    #38726173
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hi all

в релизнотах к 2.1 был анонсирован код ошибки 335544842, относящийся к возможности клиентом вытряхивать стек вызовов привозникновении исключения (стандартного или пользовательского).

Имеется тест, имитирующий OLTP-нагрузку. Его пробные топки показывают, что на FB 3.0 SuperClassic некоторые (не все!) ХП постоянно обламываются, причём как-то странно: в трейсе этот код (335544842) вылезает самым первым в списке, что никогда не случалось в 3.0 SS и в 2.5.

Вот пример "хорошего индейца", т.е. когда стек вызовов действительно показывает все задействованные ХП:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
2014-08-22T00:28:08.7750 (28415:0x7fa0090ba2e8) ERROR AT JStatement::fetch
	oltp30 (ATT_231, SYSDBA:NONE, NONE, TCPv4:192.168.43.96)
	C:\MIX\firebird\fb25\bin\isql.exe:2220
335544517 : exception 10
335544382 : EX_NO_ROWS_IN_SHOPPING_CART
335545016 : shopping_cart is empty, check source 'v_random_find_ord_sup'
335544842 : At procedure 'SP_FILL_SHOPPING_CART' line: 143, col: 9
At procedure 'SP_SUPPLIER_INVOICE' line: 40, col: 5

В результате, клиент получает gdscode = 335544517. В некоторых случаях код, обрабатывающий исключения, ожидает наличие именно этого числа, т.к. оно относится к user-defined типу.

--------------

А вот пример "плохого индейца", который очень часто лезет вместо предыдущего:

Код: plaintext
1.
2.
3.
4.
5.
2014-08-22T00:28:08.7800 (28415:0x7fa0090bfda8) ERROR AT JStatement::fetch
	oltp30 (ATT_240, SYSDBA:NONE, NONE, TCPv4:192.168.43.96)
	C:\MIX\firebird\fb25\bin\isql.exe:1936
335544842 : At procedure 'SP_FILL_SHOPPING_CART' line: 143, col: 9
At procedure 'SP_SUPPLIER_INVOICE' line: 40, col: 5
335544842 : At procedure 'SP_SUPPLIER_INVOICE' line: 109, col: 9

Ошибка с кодом 335544842 вылезла на самом верху, и именно её получит клиент.

Причём, есть среди "плохих индейцев" и такие, которые своим 335544842 и line: NNN, col: MMM указывают на... оператор выброса пользовательского exception'a!

Например, вот это:

Код: plaintext
1.
2.
3.
4.
5.
2014-08-22T00:28:09.7860 (28415:0x7fa0090bc5a0) ERROR AT JStatement::fetch
	oltp30 (ATT_242, SYSDBA:NONE, NONE, TCPv4:192.168.0.201)
	C:\1Install\FIREBIRD_2_5\bin\isql.exe:2632
335544842 : At function 'FN_GET_RANDOM_ID'  line: 190, col: 9 
At procedure 'SP_CANCEL_CUSTOMER_RESERVE' line: 36, col: 5
335544842 : At procedure 'SP_CANCEL_CUSTOMER_RESERVE' line: 126, col: 9

- указует на:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
    if ( id_selected is null and a_raise_exc = 1 ) then
    begin
        msg = 'ex_can_not_select_random_id in '
              ||trim(iif(id_min is null, 'EMPTY ', ''))||' '||:a_view_for_search;

        v_info='id_rnd='||coalesce(id_random,'<null>');
        if ( id_min is NOT null ) then
           v_info = v_info || ', id_min=' || id_min || ', id_max='|| id_max||', ';

        execute procedure sp_add_to_abend_log(msg,null,v_info, v_this);

         exception ex_can_not_select_random_id   -- line 190, col 9 
            using ( coalesce(id_random,'<null>'),
                    trim(iif(id_min is null, 'empty ', '')) ||' '||:a_view_for_search,
                    cast(:id_min as bigint),
                    cast(:id_max as bigint)
                  );
    end

(тут стопудово идёт пользовательско исключение, т.е. у него код 335544517; а в стеке этого вообще нет)

Проверил на более древних билдах, собирая ФБ с номерами ревизий, на несколько сотен меньше нынешней. Результат - одинаковый: для SS всё Ок, для SC - как показано выше.

Кто-нить может объяснить, от чего это всё лезет, причём только в SuperClassic'e 3.0 ?
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / 3.0 SuperCLASSIC: gds=335544842 на вершине стека вызовов, стек явно обрезанный. Why ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]