Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Утечка памяти (возм., из-за trigger after commit) / 25 сообщений из 42, страница 1 из 2
10.09.2013, 14:33:44
    #38392291
Fr0sT-Brutal
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Утечка памяти (возм., из-за trigger after commit)
Озадачил меня ФБ. Заметил, что в процессе работы медленно, но верно утекает память (судя по всему, по нес-ку кило на каждую транзакцию). Всё перебрал, методом исключения вышел на триггер
TRIGGER TRIG_TR_COMMIT ON TRANSACTION COMMIT POSITION 0
Если его тело закомментировать (при этом оставив проверку:
Код: sql
1.
2.
3.
4.
  IF (CURRENT_ROLE = 'ROL_FILL') THEN
  BEGIN
    /* ... */
  END


- утечки нет. Стоит раскомментировать совершенно безобидную строчку
Код: sql
1.
2.
3.
4.
5.
6.
  IF (CURRENT_ROLE = 'ROL_FILL') THEN
  BEGIN
    SELECT Debug_Log FROM Options
      INTO :Debug_Log;
    /* ... */
  END


- утечка есть.

Детали конфигурации:
OS Win7 Pro x64
Server Version: WI-V2.5.3.26690 Firebird 2.5 (пробовал и на релизном 2.5.2)
Server Implementation: Firebird/x86-64/Windows NT
Service Version: 2
Архитектура SuperClassic (fb_inet_server.exe -s DefaultInstance -m)

БД: ODS 11.2
Устройство: БД выполняет функции буфера для данных, которые сыпятся в реальном времени. Старые данные удаляются. Инсерты объединяются в транзакции пачками до 90 штук. Для нижеприведенных тестов запускал имитацию 300 источников данных с интервалом генерации раз в секунду. Подключение - единственное (соответственно никаких проблем с блокировкой доступа быть не должно).
Статистика базы после 5 мин. работы теста (утечка есть):

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
Database header page information:
        Flags                   0
        Checksum                12345
        Generation              135216
        Page size               16384
        ODS version             11.2
        Oldest transaction      126719
        Oldest active           126720
        Oldest snapshot         126719
        Next transaction        126722
        Bumped transaction      1
        Sequence number         0
        Next attachment ID      8483
        Implementation ID       26
        Shadow count            0
        Page buffers            0
        Next header page        0
        Database dialect        3
        Creation date           Aug 22, 2013 17:53:24
        Attributes              force write

    Variable header data:
        Sweep interval:         5000
        *END*



Утечку определяю через MON$MEMORY_USAGE (а также Process Explorer-ом, столбцы Private bytes и Working set):
run.bat:
Код: sql
1.
2.
3.
4.
5.
6.
7.
@echo off
echo NOW_                  STAT_ID STAT_GR              MEM_USED             MEM_ALLOC  > mem.log
echo ================ ============ ======= ===================== ===================== >> mem.log
:show
echo SET HEADING OFF; IN mem_mon.sql; | isql_shell.bat | find "M_ " >> mem.log
sleep 1000
goto :show



isql_shell.bat:
Код: sql
1.
2.
3.
4.
5.
6.
7.
@echo off

set CDir=%~dp0%
set User=SYSDBA
set Pass=masterkey

"%CDir%\isql.exe" -q -u %User% -p %Pass% RTData



mem_mon.sql:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
select 
    'M_ ' || current_time as Now_,
    MON$STAT_ID as STAT_ID,
    MON$STAT_GROUP as STAT_GR,
    MON$MEMORY_USED as MEM_USED,
    MON$MEMORY_ALLOCATED as MEM_ALLOC
  from MON$MEMORY_USAGE
  where MON$MEMORY_USED=(select max(MON$MEMORY_USED) from MON$MEMORY_USAGE);
commit;


('M_ ' - для фильтрации строк, чтобы в лог писалась только нужная инфа; Sleep - моя программка для создания паузы)


Итоги:
триггер с одним значимым оператором


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
/* Trigger: TRIG_TR_COMMIT */
CREATE TRIGGER TRIG_TR_COMMIT
ACTIVE ON TRANSACTION COMMIT POSITION 0
AS
  DECLARE VARIABLE Debug_Log DOM_BOOL;
BEGIN
  IF (CURRENT_ROLE = 'ROL_FILL') THEN
  BEGIN
    SELECT Debug_Log FROM Options
      INTO :Debug_Log;
    /* ... */
  END
END



Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
M_ 14:11:43.0000            6       1               2407056               3612672 
M_ 14:11:44.0000            6       1               2401608               3612672 
M_ 14:11:45.0000            6       1               2420968               3612672 
M_ 14:11:46.0000            6       1               2416320               3612672 
M_ 14:11:47.0000            6       1               2437880               3612672 
M_ 14:11:48.0000            6       1               2402144               3612672 
M_ 14:11:49.0000            6       1               2434816               3612672 
M_ 14:11:50.0000            6       1               2429560               3612672 
M_ 14:11:52.0000            6       1               2452368               3678208 
M_ 14:11:53.0000            6       1               2420448               3678208 
M_ 14:11:54.0000            6       1               2425024               3678208 
M_ 14:11:55.0000            6       1               2429600               3678208 
M_ 14:11:56.0000            6       1               2468800               3678208 
M_ 14:11:57.0000            6       1               2463376               3678208 
M_ 14:11:58.0000            6       1               2444600               3678208 
M_ 14:11:59.0000            6       1               2449176               3678208 
M_ 14:12:00.0000            6       1               2454896               3678208 
M_ 14:12:01.0000            6       1               2459472               3678208 
M_ 14:12:02.0000            6       1               2466336               3678208 
M_ 14:12:03.0000            6       1               2470912               3678208 
M_ 14:12:04.0000            6       1               2476632               3678208 
M_ 14:12:05.0000            6       1               2483496               3678208 
M_ 14:12:06.0000            6       1               2488072               3678208 
M_ 14:12:08.0000            6       1               2492648               3743744 
M_ 14:12:09.0000            6       1               2498368               3743744 
M_ 14:12:10.0000            6       1               2502944               3743744 
M_ 14:12:11.0000            6       1               2508664               3743744 
M_ 14:12:12.0000            6       1               2553496               3743744 
M_ 14:12:13.0000            6       1               2551536               3743744 
M_ 14:12:14.0000            6       1               2566304               3743744 
M_ 14:12:15.0000            6       1               2569464               3809280 
M_ 14:12:16.0000            6       1               2538992               3743744 
M_ 14:12:17.0000            6       1               2576664               3809280 
M_ 14:12:18.0000            6       1               2575688               3809280 
M_ 14:12:19.0000            6       1               2584920               3809280 
M_ 14:12:20.0000            6       1               2560296               3809280 
M_ 14:12:21.0000            6       1               2566016               3809280 
M_ 14:12:22.0000            6       1               2571024               3809280 
M_ 14:12:23.0000            6       1               2604384               3809280 
M_ 14:12:25.0000            6       1               2579744               3809280 
M_ 14:12:26.0000            6       1               2585032               3809280 
M_ 14:12:27.0000            6       1               2591032               3809280 
M_ 14:12:28.0000            6       1               2596752               3809280 
M_ 14:12:29.0000            6       1               2627888               3874816 
M_ 14:12:30.0000            6       1               2641456               3874816 
M_ 14:12:31.0000            6       1               2612768               3874816 
M_ 14:12:32.0000            6       1               2618488               3874816 
M_ 14:12:33.0000            6       1               2624208               3874816 
M_ 14:12:34.0000            6       1               2654096               3874816 
M_ 14:12:35.0000            6       1               2641248               3874816 
M_ 14:12:36.0000            6       1               2641368               3874816 
M_ 14:12:37.0000            6       1               2647088               3874816 
M_ 14:12:38.0000            6       1               2652808               3874816 
M_ 14:12:40.0000            6       1               2658528               3874816 
M_ 14:12:41.0000            6       1               2664248               3874816 
M_ 14:12:42.0000            6       1               2669968               3874816 
M_ 14:12:43.0000            6       1               2678408               3940352 
M_ 14:12:44.0000            6       1               2723720               3940352 
M_ 14:12:45.0000            2       1               1830040               2433024 
M_ 14:12:46.0000            2       1               1830040               2433024 





триггер с одним только условием проверки

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
CREATE OR ALTER TRIGGER TRIG_TR_COMMIT
ACTIVE ON TRANSACTION COMMIT POSITION 0
AS
BEGIN
  IF (CURRENT_ROLE = 'ROL_FILL') THEN
  BEGIN
  END
END



Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
M_ 14:04:50.0000            6       1               2397000               3612672 
M_ 14:04:51.0000            6       1               2374192               3612672 
M_ 14:04:52.0000            6       1               2409120               3612672 
M_ 14:04:53.0000            6       1               2412104               3612672 
M_ 14:04:54.0000            6       1               2406480               3612672 
M_ 14:04:55.0000            6       1               2416752               3612672 
M_ 14:04:56.0000            6       1               2385424               3612672 
M_ 14:04:57.0000            6       1               2402960               3612672 
M_ 14:04:58.0000            6       1               2401696               3612672 
M_ 14:04:59.0000            6       1               2374192               3612672 
M_ 14:05:00.0000            6       1               2403392               3612672 
M_ 14:05:01.0000            6       1               2374192               3612672 
M_ 14:05:02.0000            6       1               2393528               3612672 
M_ 14:05:03.0000            6       1               2374192               3612672 
M_ 14:05:05.0000            6       1               2374624               3612672 
M_ 14:05:06.0000            6       1               2373760               3612672 
M_ 14:05:07.0000            6       1               2373760               3612672 
M_ 14:05:08.0000            6       1               2408272               3612672 
M_ 14:05:09.0000            6       1               2390664               3612672 
M_ 14:05:10.0000            6       1               2403720               3612672 
M_ 14:05:11.0000            6       1               2411360               3612672 
M_ 14:05:12.0000            6       1               2406456               3612672 
M_ 14:05:13.0000            6       1               2396680               3612672 
M_ 14:05:14.0000            6       1               2409032               3612672 
M_ 14:05:15.0000            6       1               2393880               3612672 
M_ 14:05:16.0000            6       1               2397432               3612672 
M_ 14:05:17.0000            6       1               2395200               3612672 
M_ 14:05:18.0000            6       1               2374192               3612672 
M_ 14:05:19.0000            6       1               2397000               3612672 
M_ 14:05:21.0000            6       1               2374624               3612672 
M_ 14:05:22.0000            6       1               2393096               3612672 
M_ 14:05:23.0000            6       1               2374192               3612672 
M_ 14:05:24.0000            6       1               2412104               3612672 
M_ 14:05:25.0000            6       1               2411280               3612672 
M_ 14:05:26.0000            6       1               2405152               3612672 
M_ 14:05:27.0000            6       1               2415920               3612672 
M_ 14:05:28.0000            6       1               2415920               3612672 
M_ 14:05:29.0000            6       1               2408392               3612672 
M_ 14:05:30.0000            6       1               2407808               3612672 
M_ 14:05:31.0000            6       1               2403536               3612672 
M_ 14:05:32.0000            6       1               2385424               3612672 
M_ 14:05:33.0000            6       1               2375056               3612672 
M_ 14:05:34.0000            6       1               2385424               3612672 
M_ 14:05:35.0000            6       1               2373760               3612672 
M_ 14:05:37.0000            8       1               2380936               3612672 
M_ 14:05:38.0000            8       1               2374192               3612672 
M_ 14:05:39.0000            8       1               2374192               3612672 
M_ 14:05:40.0000            8       1               2393536               3612672 
M_ 14:05:41.0000            8       1               2399584               3612672 
M_ 14:05:42.0000            8       1               2393608               3612672 
M_ 14:05:43.0000            8       1               2401032               3612672 
M_ 14:05:44.0000            8       1               2411280               3612672 
M_ 14:05:45.0000            8       1               2386288               3612672 
M_ 14:05:46.0000            8       1               2408680               3612672 
M_ 14:05:47.0000            8       1               2401944               3612672 
M_ 14:05:48.0000            8       1               2402144               3612672 
M_ 14:05:49.0000            8       1               2395288               3612672 
M_ 14:05:50.0000            8       1               2400328               3612672 
M_ 14:05:52.0000            8       1               2399120               3612672 
M_ 14:05:53.0000            8       1               2404432               3612672 
M_ 14:05:54.0000            8       1               2404432               3612672 
M_ 14:05:55.0000            8       1               2373760               3612672 
M_ 14:05:56.0000            8       1               2390664               3612672 
M_ 14:05:57.0000            8       1               2411280               3612672 
M_ 14:05:58.0000            8       1               2393104               3612672 
M_ 14:05:59.0000            8       1               2373760               3612672 
M_ 14:06:00.0000            8       1               2374192               3612672 
M_ 14:06:01.0000            8       1               2380856               3612672 
M_ 14:06:02.0000            8       1               2398680               3612672 
M_ 14:06:03.0000            8       1               2398760               3612672 
M_ 14:06:05.0000            8       1               2374624               3612672 
M_ 14:06:06.0000            8       1               2404432               3612672 
M_ 14:06:07.0000            8       1               2373760               3612672 
M_ 14:06:08.0000            8       1               2406248               3612672 
M_ 14:06:09.0000            8       1               2410416               3612672 
M_ 14:06:10.0000            8       1               2410416               3612672 
M_ 14:06:11.0000            8       1               2406024               3612672 
M_ 14:06:12.0000            8       1               2415936               3612672 
M_ 14:06:13.0000            8       1               2393536               3612672 


и так в течение получаса.


Уже голову сломал, пытаясь дознаться, что же это за беда. Готов предоставить любую другую инфу.
...
Рейтинг: 0 / 0
10.09.2013, 14:46:06
    #38392322
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Утечка памяти (возм., из-за trigger after commit)
Fr0sT-BrutalГотов предоставить любую другую инфу.
Покажи триггер целиком, без цензурных многоточек.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
10.09.2013, 14:48:59
    #38392327
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Утечка памяти (возм., из-за trigger after commit)
Fr0sT-Brutal,

не помешает ещё раскрыть домен DOM_BOOL и привести DLL таблицы Options
...
Рейтинг: 0 / 0
10.09.2013, 15:07:09
    #38392366
Fr0sT-Brutal
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Утечка памяти (возм., из-за trigger after commit)
Dimitry Sibiryakov,

текст триггера привел целиком, многоточки в /* */ обозначают то, что закомментировано. Думаю, этого достаточно, чтобы не влиять на ситуацию :)

Симонов Денис,

ничего сверхъестественного
Код: sql
1.
2.
3.
CREATE DOMAIN DOM_BOOL AS
SMALLINT
CHECK (VALUE IN (0, 1));



Код: sql
1.
2.
3.
4.
5.
6.
CREATE TABLE OPTIONS (
    QUEUE_LEN  SMALLINT,
    DEBUG_LOG      DOM_BOOL,
    NO_DATA_PAUSE   INTEGER,
    LOGFILE_PATT   VARCHAR(255)
);


В таблице единственная запись.
...
Рейтинг: 0 / 0
10.09.2013, 15:12:36
    #38392380
Fr0sT-Brutal
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Утечка памяти (возм., из-за trigger after commit)
В рамках акции по проверке своих самых безумных подозрений удалил закомментированный текст в триггере, а также объявления неиспользуемых переменных. Т.е. чтобы текст полностью совпадал в тем, что привел в посте. Результат - тот же (что радует, хотя бы картина мира не пошатнулась :) )
...
Рейтинг: 0 / 0
10.09.2013, 15:18:30
    #38392384
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Утечка памяти (возм., из-за trigger after commit)
Fr0sT-Brutal,

проверь вот так тоже утечка будет?

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
/* Trigger: TRIG_TR_COMMIT */
CREATE TRIGGER TRIG_TR_COMMIT
ACTIVE ON TRANSACTION COMMIT POSITION 0
AS
  DECLARE VARIABLE I INTEGER;
BEGIN
  I = 1;
END



Ещё вопрос в таблице Debug_Log всегда одна запись? Если нет, то вот это
Код: sql
1.
2.
    SELECT Debug_Log FROM Options
      INTO :Debug_Log;


не верно.
...
Рейтинг: 0 / 0
10.09.2013, 15:20:08
    #38392387
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Утечка памяти (возм., из-за trigger after commit)
Fr0sT-Brutalтриггер с одним значимым оператором
Код: sql
1.
2.
3.
4.
5.
/* Trigger: TRIG_TR_COMMIT */
CREATE TRIGGER TRIG_TR_COMMIT
ACTIVE ON TRANSACTION COMMIT POSITION 0
AS
   DECLARE VARIABLE Debug_Log DOM_BOOL;


Попробуй заменить в этом объявлении домен на простой тип.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
10.09.2013, 15:22:16
    #38392389
dimitr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Утечка памяти (возм., из-за trigger after commit)
еще интересно было бы проверить, вот в таком варианте будет утечка или нет:

Код: sql
1.
2.
3.
4.
5.
6.
7.
  IF (CURRENT_ROLE = 'ROL_FILL') THEN
  BEGIN
    FOR SELECT Debug_Log FROM Options
      INTO :Debug_Log
    DO BEGIN END
    /* ... */
  END
...
Рейтинг: 0 / 0
10.09.2013, 15:36:55
    #38392415
Fr0sT-Brutal
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Утечка памяти (возм., из-за trigger after commit)
Симонов Денис,

даже вот так утечки нет
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
CREATE OR ALTER TRIGGER TRIG_TR_COMMIT
ACTIVE ON TRANSACTION COMMIT POSITION 0
AS
  DECLARE VARIABLE Debug_Log smallint;
BEGIN
  IF (CURRENT_ROLE = 'ROL_FILL') THEN
  BEGIN
  Debug_Log = 1;
--    SELECT Debug_Log FROM Options
--      INTO :Debug_Log;
  END
END



Ещё вопрос в таблице Debug_Log всегда одна запись?
Да, т.к. если там две - вываливается исключение multiple rows in singleton select

Dimitry Sibiryakov,
Попробуй заменить в этом объявлении домен на простой тип.
Не помогло (заменял на smallint)

dimitr,
утекает
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
M_ 15:29:50.0000            6       1               2403624               3612672 
M_ 15:29:51.0000            6       1               2392568               3612672 
M_ 15:29:52.0000            6       1               2399432               3612672 
M_ 15:29:53.0000            6       1               2406296               3612672 
M_ 15:29:54.0000            6       1               2412016               3612672 
M_ 15:29:56.0000            6       1               2441512               3612672 
M_ 15:29:57.0000            6       1               2422312               3612672 
M_ 15:29:58.0000            6       1               2428032               3612672 
M_ 15:29:59.0000            6       1               2432608               3678208 
M_ 15:30:00.0000            6       1               2459968               3678208 
M_ 15:30:01.0000            6       1               2445192               3678208 
M_ 15:30:02.0000            6       1               2450912               3678208 
M_ 15:30:03.0000            6       1               2456632               3678208 



Более того, select first 1 тоже не спасает.
Причем системная таблица тоже дает такой эффект:
Код: sql
1.
2.
select first 1 MON$STAT_ID from MON$MEMORY_USAGE
      INTO :Debug_Log;


Правда, намного медленнее.
...
Рейтинг: 0 / 0
10.09.2013, 15:40:50
    #38392427
Fr0sT-Brutal
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Утечка памяти (возм., из-за trigger after commit)
Возможно, проблема в любом триггере по коммиту, а то, что на бессмысленном коде утечки нет, - работа оптимизатора, который выкидывает эти участки кода, в итоге приходя к пустому телу триггера? Это единственное более-менее разумное объяснение, которое мне приходит в голову.
...
Рейтинг: 0 / 0
10.09.2013, 15:48:35
    #38392441
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Утечка памяти (возм., из-за trigger after commit)
Fr0sT-Brutal,

эээ. Таблицы мониторинга это другое. Не надо их в триггерах на коммит использовать.

Если здесь действительно есть утечка, то это конечно баг. Просто пока не ясно на любом ли селекте она происходит. Попробуй в этом триггере без селекта только вставку делать.
...
Рейтинг: 0 / 0
10.09.2013, 15:59:05
    #38392462
Fr0sT-Brutal
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Утечка памяти (возм., из-за trigger after commit)
Симонов Денис,

пожалуй, твоя правда, просто взял первую попавшуюся под руку таблицу из системных.
Но вот на таком
Код: sql
1.
2.
    select RDB$RELATION_ID from rdb$database
      INTO :Debug_Log;


то же самое. Причем базу уже для чистоты эксперимента "обезжирил" до невозможности.
...
Рейтинг: 0 / 0
10.09.2013, 16:04:16
    #38392474
Fr0sT-Brutal
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Утечка памяти (возм., из-за trigger after commit)
Да, еще забыл: конфиг ФБ - полностью дефолтный (совпадает с firebird.conf.default)
...
Рейтинг: 0 / 0
10.09.2013, 16:09:05
    #38392482
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Утечка памяти (возм., из-за trigger after commit)
Fr0sT-Brutal,

подожди пока dimitr прокомментирует. Если он подтвердит, что это бага иди в трекер.
...
Рейтинг: 0 / 0
10.09.2013, 16:23:36
    #38392513
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Утечка памяти (возм., из-за trigger after commit)
Симонов Денисподожди пока dimitr прокомментирует.
dimitr человек вежливый, поэтому я за него прокомментирую: аффтар, тебя попросили
проверить на for select вместо простого select. Ты это сделал?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
10.09.2013, 16:39:45
    #38392547
Fr0sT-Brutal
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Утечка памяти (возм., из-за trigger after commit)
Dimitry Sibiryakov,

Ты это сделал?

яdimitr,
утекает
и далее.
...
Рейтинг: 0 / 0
10.09.2013, 16:54:02
    #38392576
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Утечка памяти (возм., из-за trigger after commit)
Dimitry Sibiryakov,

даже если for select утечки не будет, то баг всё равно остаётся багом и его надо править.
...
Рейтинг: 0 / 0
10.09.2013, 17:14:47
    #38392620
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Утечка памяти (возм., из-за trigger after commit)
Dimitry Sibiryakov,

А какая принципиальная разница между for select и select? Ты предполагаешь, что наличие DO как-то уберет утечку?
...
Рейтинг: 0 / 0
10.09.2013, 17:30:56
    #38392655
Fr0sT-Brutal
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Утечка памяти (возм., из-за trigger after commit)
DarkMasterDimitry Sibiryakov,

А какая принципиальная разница между for select и select? Ты предполагаешь, что наличие DO как-то уберет утечку?
Предполагаю, что было подозрение на неполную выборку (одна запись из таблицы с N записей? Хотя сервер ведь выбрасывает исключение в таком случае) и нечто вроде незакрытого курсора.

Удалось воспроизвести с помощью isql. Сейчас минимизирую тестовый набор и выложу на проверку всеми желающими.
...
Рейтинг: 0 / 0
10.09.2013, 17:46:04
    #38392690
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Утечка памяти (возм., из-за trigger after commit)
DarkMaster,

Разница в SavePoint'ах для последующего блока BEGIN...END, да и в наличии курсора.

Fr0sT-Brutal,
может сразу в трекер? Хотя давай скрипт проверим.
...
Рейтинг: 0 / 0
10.09.2013, 17:48:41
    #38392693
dimitr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Утечка памяти (возм., из-за trigger after commit)
Fr0sT-BrutalПредполагаю, что было подозрение на неполную выборку (одна запись из таблицы с N записей? Хотя сервер ведь выбрасывает исключение в таком случае) и нечто вроде незакрытого курсора.
никто не угадал, хотя разница таки есть :-) Но, похоже, она тут не причем.
...
Рейтинг: 0 / 0
10.09.2013, 17:52:50
    #38392703
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Утечка памяти (возм., из-за trigger after commit)
dimitr,
ответ в студию
...
Рейтинг: 0 / 0
10.09.2013, 17:56:51
    #38392704
dimitr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Утечка памяти (возм., из-за trigger after commit)
Симонов Денис,

проверка сингулярности требует дополнительной аллокации памяти под запись
...
Рейтинг: 0 / 0
10.09.2013, 18:46:06
    #38392769
Fr0sT-Brutal
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Утечка памяти (возм., из-за trigger after commit)
Так, вроде бы весь комплект готов.

Скачать в зипе: http://yadi.sk/d/kgbR2SEM93USM
Состав файлов:
db.sql - скрипт создания базы
Mem_mon.bat - батник для запуска мониторинга памяти
mem_mon.sql - запрос для Mem_mon.bat
fbclient.dll,
isql.exe - стандартные утилы
isql_shell_boss.bat - батник для запуска isql как sysdba
Tester.bat - батник для запуска проверочного цикла
gen_cmds.bat - генерирует команды (вызов из Tester.bat)
Sleep.exe - для паузы
isql_shell.bat - батник для запуска isql как юзер
RTDTEST_BARE.FDB - сама БД

Запуск
Настройки в ФБ:
Юзер для теста - WRITER, пароль "1"
Алиас БД для теста - RTData

1) Запустить Mem_mon.bat
2) Открыть mem.log в просмотровщике логов, умеющем следить за обновлением файла
3) Запустить Tester.bat

Замечания по юзкейсу (выяснилось в процессе вычленения необходимого минимума для воспроизведения утечки):
1) Наличие роли играет роль (хых) - на простом юзере без роли бага нет
2) Наличие параметра типа DOM_MSRS в PR_IF_W_PUSHMEASURE также вроде бы играет роль
...
Рейтинг: 0 / 0
10.09.2013, 18:55:36
    #38392779
Fr0sT-Brutal
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Утечка памяти (возм., из-за trigger after commit)
Поправка : параметр ХП не влияет, убрал его и объявление домена.

!!! Если база открыта в IBE, утечка, похоже, не проявляется.
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Утечка памяти (возм., из-за trigger after commit) / 25 сообщений из 42, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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