powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / При долгой работе переполняется память сервера Firebird 1.5.1.4481
42 сообщений из 42, показаны все 2 страниц
При долгой работе переполняется память сервера Firebird 1.5.1.4481
    #39203359
vs815
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.

Описание проблемы:

СУБД Firebird 1.5.1.4481 стоит на сервере Windows Server 2008 R2 Enterprise 64 bit с 8 Гб ОЗУ.
С течением времени память процесса fbserver постоянно растет. При достижение 1,9 Гб Firebird начинает глючить и выдавать ошибки. Отключение пользователей от базы данных не уменьшает память процесса. Помогает только перезапуск Firebird.

По совету из FAQ http://www.ibase.ru/firebird-interbase-yaffil-faq/#При долгой работе переполняется память сервера
проверил самописную udf на предмет утечки памяти. Проблема в udf. Понять что не правильно написано в udf не могу. Помогите, пожалуйста, решить проблему с утечкой памяти.

Текст udf (написана на Delphi 7):

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
library monDLL;

uses
  SysUtils,
  Classes,
  Dialogs;

{$R *.res}

function ib_util_malloc(l: integer): pointer; cdecl; external 'ib_util.dll';

function fn_rupper (sSmall: PChar): PChar; cdecl; export;
begin
  Result := ib_util_malloc(Length(sSmall)+1);
  StrPCopy(Result, AnsiUpperCase(sSmall));
end;

exports
  fn_rupper;

end.
...
Рейтинг: 0 / 0
При долгой работе переполняется память сервера Firebird 1.5.1.4481
    #39203364
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vs815
Код: pascal
1.
2.
  Classes,
  Dialogs;


Вот эти две строки удали. Они гадят.
...
Рейтинг: 0 / 0
При долгой работе переполняется память сервера Firebird 1.5.1.4481
    #39203365
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vs815СУБД Firebird 1.5.1.4481
Серия 1.5 кончилась на 1.5.6: http://www.firebirdsql.org/en/firebird-1-5/

vs815Текст udf
А её объявление в базе?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
При долгой работе переполняется память сервера Firebird 1.5.1.4481
    #39203417
vs815
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

DECLARE EXTERNAL FUNCTION RUPPER
CSTRING(16383)
RETURNS CSTRING(16383)
ENTRY_POINT 'fn_rupper' MODULE_NAME 'mondll';
...
Рейтинг: 0 / 0
При долгой работе переполняется память сервера Firebird 1.5.1.4481
    #39203418
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где FREE_IT?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
При долгой работе переполняется память сервера Firebird 1.5.1.4481
    #39203433
vs815
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

А где FREE_IT должен быть? Не могли бы привести пример на базе моей udf?
...
Рейтинг: 0 / 0
При долгой работе переполняется память сервера Firebird 1.5.1.4481
    #39203435
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мелочь, возможно, но зачем два раа подряд создавaть паскаль-строки из с-строки ?

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
function fn_rupper (sSmall: PANSIChar): PANSIChar; cdecl; export;
VAR TMP: ANSISTRING; 
// "string" - не вполне определенный тип - в разных версиях он разной длины
// то жe самое про char и PChar
begin
  TMP := sSmall;
  TMP := AnsiUpperCase(TMP);

  Result := ib_util_malloc( (Length(TMP)+1)*SizeOf(TMP[1]));
  IF nil <> Result THEN
      StrPCopy(Result, TMP);
end;

[/quote]

И в SQL-объявлении функции xорошо бы наверное прописать кодировку Windows-1251

А то поступит строка, например, в UTF-8 - что делать функции ?
...
Рейтинг: 0 / 0
При долгой работе переполняется память сервера Firebird 1.5.1.4481
    #39203437
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vs815Dimitry Sibiryakov,

А где FREE_IT должен быть? Не могли бы привести пример на базе моей udf?

смотри пример http://www.firebirdsql.org/en/writing-udfs-for-interbase/#writing_udfs_in_delphi_for_windows_platforms
...
Рейтинг: 0 / 0
При долгой работе переполняется память сервера Firebird 1.5.1.4481
    #39203440
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
При долгой работе переполняется память сервера Firebird 1.5.1.4481
    #39203446
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch,

ну какой UTF-8 в 1.5
...
Рейтинг: 0 / 0
При долгой работе переполняется память сервера Firebird 1.5.1.4481
    #39203452
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovГде FREE_IT?
+1 и выкинуть лишние модули из udf.
...
Рейтинг: 0 / 0
При долгой работе переполняется память сервера Firebird 1.5.1.4481
    #39203453
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

ну мало ли что туда еще по факту придет ?

в параметрах соединения забудут поставить кодировку или перепутают - и приедет КОИ8-Р с юниксов. UTF-16 с Явы или новой Дельфи, да хоть Unicode_fss

причем ещё и осядет где-нибудь в PSQL, xрен потом найдешь
...
Рейтинг: 0 / 0
При долгой работе переполняется память сервера Firebird 1.5.1.4481
    #39203456
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vs815А где FREE_IT должен быть?
Там, где ему положено быть согласно
Language Reference .
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
При долгой работе переполняется память сервера Firebird 1.5.1.4481
    #39203471
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman,

...и поменять RTL, и в итоге сделать DLL настолько маленькую, что Windows ее загрузить не смoжет :-)
...
Рейтинг: 0 / 0
При долгой работе переполняется память сервера Firebird 1.5.1.4481
    #39203481
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch,
нормально все будет :) 17210217
...
Рейтинг: 0 / 0
При долгой работе переполняется память сервера Firebird 1.5.1.4481
    #39203483
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman,

ну и какой размер скомпилированного файла? в 2KB влезло ?
...
Рейтинг: 0 / 0
При долгой работе переполняется память сервера Firebird 1.5.1.4481
    #39203501
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch,
2кб это психологический барьер?
...
Рейтинг: 0 / 0
При долгой работе переполняется память сервера Firebird 1.5.1.4481
    #39203554
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman,

Вопрос к разработчикам Windows, для меня это было неожиданностью. По факту оказалось, что Windows не способна загрузить DLL такого размера.

Я подозреваю, что настоящая граница - 4KB - размер страницы виртуальной памяти в 80386, каковых в бинарнике под Win32 загрузчиком ожидается целое число.
...
Рейтинг: 0 / 0
При долгой работе переполняется память сервера Firebird 1.5.1.4481
    #39203571
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch,
компилятор делфи и ртл успешно обходят этот маленький недостаток. :)
...
Рейтинг: 0 / 0
При долгой работе переполняется память сервера Firebird 1.5.1.4481
    #39203627
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanкомпилятор делфи

нет, D5 вполне создает 2KB

что до RTL - 18992590
...
Рейтинг: 0 / 0
При долгой работе переполняется память сервера Firebird 1.5.1.4481
    #39203628
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ariochwadmanкомпилятор делфи

нет, D5 вполне создает 2KB

что до RTL - 18992590
Меняет регистр в качестве удф? Или речь о пустой заглушке?
...
Рейтинг: 0 / 0
При долгой работе переполняется память сервера Firebird 1.5.1.4481
    #39203674
vs815
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wadman,

В UDF много различных функций для работы с текстом. Я привел пример одной из них (предварительно удалив лишнее). В таком варианте также идет утечка памяти. Как подсказали выше (и особенно помогла статья https://ibase.ru/udf_ok/ ) проблема в неправильной регистрации функции в базе. Отсюда возник и вопрос: а можно ли оставить объявление функции в базе как было

Код: plsql
1.
2.
3.
4.
DECLARE EXTERNAL FUNCTION RUPPER
CSTRING(16383)
RETURNS CSTRING(16383)
ENTRY_POINT 'fn_rupper' MODULE_NAME 'mondll';



а освобождение памяти реализовать в udf вот так:

Код: pascal
1.
2.
3.
4.
5.
6.
function fn_rupper (sSmall: PChar): PChar; cdecl; export;
begin
  Result := ib_util_malloc(Length(sSmall)+1);
  StrPCopy(Result, AnsiUpperCase(sSmall));
  FreeMem(sSmall);
end;
...
Рейтинг: 0 / 0
При долгой работе переполняется память сервера Firebird 1.5.1.4481
    #39203684
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vs815можно ли
Нельзя, запрещаю.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
При долгой работе переполняется память сервера Firebird 1.5.1.4481
    #39203722
vs815
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

Попробовал освобождать память в UDF - сервер упал. В логе написано следующее:



SUPER (Client) Tue Mar 29 23:14:24 2016
INET/inet_error: send errno = 10054

SUPER (Client) Tue Mar 29 23:14:24 2016
REMOTE INTERFACE/gds__detach: Unsuccesful detach from database.
Uncommitted work may have been lost

SUPER (Client) Tue Mar 29 23:14:24 2016
INET/inet_error: send errno = 10054

Что я сделал не правильно?
...
Рейтинг: 0 / 0
При долгой работе переполняется память сервера Firebird 1.5.1.4481
    #39203731
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vs815Что я сделал не правильно?
1. Не используешь мозг.
2. Не слушаешь старших.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
При долгой работе переполняется память сервера Firebird 1.5.1.4481
    #39203734
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vs815,

интересно, для кого я делал
http://www.ibase.ru/files/download/safeudf.zip ?
...
Рейтинг: 0 / 0
При долгой работе переполняется память сервера Firebird 1.5.1.4481
    #39203735
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vs815Попробовал освобождать память в UDF
тебе пишут про неправильную декларацию udf - если используешь ib_util_malloc, так надо декларировать udf с FREE_IT.
А ты начинаешь какую-то вообще адскую фигню типа "освобождать память в udf".
...
Рейтинг: 0 / 0
При долгой работе переполняется память сервера Firebird 1.5.1.4481
    #39203737
vs815
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

А что не правильно: ib_util_malloc выделил память под переменную sSmall, а FreеMem освободил память выделенную под sSmall.

Сильно не пинай - с памятью работал мало.
...
Рейтинг: 0 / 0
При долгой работе переполняется память сервера Firebird 1.5.1.4481
    #39203740
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vs815А что не правильно: ib_util_malloc выделил память под переменную sSmall, а FreеMem освободил память выделенную под sSmall.
ядрена-матрена... ib_util_malloc выделяет память через менеджер MSVCRT. FreeMem освобождает память, выделенную дельфевым менеджером. Они несовместимы, вообще. FreeMem может освобождать только память, выделенную через GetMem.
Если память выделяется и освобождается внутри udf, то без разницы, каким менеджером ее выделять и освобождать, главное, чтобы это был один и тот же менеджер.
Использовать ib_util_malloc имеет смысл только для FREE_IT. Т.е. когда память выделяется внутри udf, а освобождается в Firebird, одним и тем же менеджером.

p.s. стыдоба, честное слово.
...
Рейтинг: 0 / 0
При долгой работе переполняется память сервера Firebird 1.5.1.4481
    #39203741
vs815
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdvvs815Попробовал освобождать память в UDF
тебе пишут про неправильную декларацию udf - если используешь ib_util_malloc, так надо декларировать udf с FREE_IT.
А ты начинаешь какую-то вообще адскую фигню типа "освобождать память в udf".

Я понял про неправильную декларацию. Но не правильно задекларировано 15 функций на которые ссылается 100500 процедур в базе. Это ж нужно писать скрипт который:
1. все зависимые процедуры закомментит,
2. удалит функции,
3. создаст функции с FREE_IT,
4. раскоментирует процедуры из первого пункта.

Вот я и предположил более легкий вариант решения проблемы. С памятью работал мало, поэтому выдвинул адскую ересь :)
...
Рейтинг: 0 / 0
При долгой работе переполняется память сервера Firebird 1.5.1.4481
    #39203742
vs815
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdv,

Вот это четко и ясно объяснено. Большое спасибо.
...
Рейтинг: 0 / 0
При долгой работе переполняется память сервера Firebird 1.5.1.4481
    #39203743
vs815
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdvvs815А что не правильно: ib_util_malloc выделил память под переменную sSmall, а FreеMem освободил память выделенную под sSmall.
ядрена-матрена... ib_util_malloc выделяет память через менеджер MSVCRT. FreeMem освобождает память, выделенную дельфевым менеджером. Они несовместимы, вообще. FreeMem может освобождать только память, выделенную через GetMem.
Если память выделяется и освобождается внутри udf, то без разницы, каким менеджером ее выделять и освобождать, главное, чтобы это был один и тот же менеджер.
Использовать ib_util_malloc имеет смысл только для FREE_IT. Т.е. когда память выделяется внутри udf, а освобождается в Firebird, одним и тем же менеджером.

p.s. стыдоба, честное слово.

Вот это четко и ясно объяснено. Большое спасибо.
...
Рейтинг: 0 / 0
При долгой работе переполняется память сервера Firebird 1.5.1.4481
    #39203744
vs815
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем большое спасибо кто помогал решить проблему. Проблема решена и тему можно закрыть.
...
Рейтинг: 0 / 0
При долгой работе переполняется память сервера Firebird 1.5.1.4481
    #39203746
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vs815Но не правильно задекларировано 15 функций на которые ссылается 100500 процедур в базе. Это ж нужно писать скрипт который:
1. все зависимые процедуры закомментит,
2. удалит функции,
3. создаст функции с FREE_IT,
4. раскоментирует процедуры из первого пункта.


Попробуй CREATE OR ALTER FUNCTION...
Если прокатит - обойдешься скриптом в 15 операторов.
...
Рейтинг: 0 / 0
При долгой работе переполняется память сервера Firebird 1.5.1.4481
    #39203748
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vs815,

а что там, разве подкорректировать декларацию без комментирования зависимостей в ФБ 1.5 нельзя? по-моему вполне можно. Как минимум, прямо через системные таблицы.

vs815Но не правильно задекларировано 15 функций
большой привет разработчику этих функций. На ibase.ru уже как минимум лет 13-15 дофигища примеров. И я всегда говорю, что перед написанием своих udf нужно ознакомиться с примерами на сайте, и свои функции писать на базе этих примеров, а не от балды.
Но нет, находятся люди, которые все эти советы игнорируют.
...
Рейтинг: 0 / 0
При долгой работе переполняется память сервера Firebird 1.5.1.4481
    #39203749
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vs815,

на всякий случай
- создаем ПРАВИЛЬНУЮ декларацию функции, например, кривая RUPPER, декларируем правильную RUPPER1
- смотрим, чем отличаются параметры в rdb$function_parameters
- меняем неправильные параметры в RUPPER в соответствии с RUPPER1, в этой самой rdb$
- смотрим декларацию rupper, в isql или ibexpert, или ... Декларация совпадает с rupper1? оч. хорошо.
- проверяем вызов rupper на миллионе записей. утечки нет? оч. хорошо.
- проверяем вызов rupper в одной из процедур. Утечки нет? оч. хорошо.

возможно, я ошибаюсь, и надо перекомпилировать эти самые 100500 процедур. Но в данном случае потребуется просто их перекомпиляция, что можно сделать выколупнув их из скрипта базы (isql -x). Никакого комментирования и восстановления текста процедур не будет нужно.
...
Рейтинг: 0 / 0
При долгой работе переполняется память сервера Firebird 1.5.1.4481
    #39203750
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockПопробуй CREATE OR ALTER FUNCTION...
Если прокатит - обойдешься скриптом в 15 операторов.А, не, нет такого наверно
...
Рейтинг: 0 / 0
При долгой работе переполняется память сервера Firebird 1.5.1.4481
    #39203778
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRock,

конечно нет. Это ты с Fb 3 перепутал, но и там этот синтаксис не для UDF.
...
Рейтинг: 0 / 0
При долгой работе переполняется память сервера Firebird 1.5.1.4481
    #39203919
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vs815Это ж нужно писать скрипт который:Это для не ленивых.

Для ленивых:
1. выгнать всех юзеров из БД.
2. сделать копию БД.
3. одним кликом мыши в эксперте деактивировать нахрен все процедуры (по необходимости дропнуть вьюхи и триггера).
3. задекларировать УДФ правильно.
4. скомпарить экспертом полученную базу и копию из пункта 2.
5. подкорректировать скрипт после компарера (тупо выкинуть неправильные декларации УДФ).
6 накатить скрипт.
...
Рейтинг: 0 / 0
При долгой работе переполняется память сервера Firebird 1.5.1.4481
    #39204261
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanAriochпропущено...


нет, D5 вполне создает 2KB

что до RTL - 18992590
Меняет регистр в качестве удф? Или речь о пустой заглушке?

Там был DLL-плагин для Fidolook Express SL, логика была небольшая, разумеется. Не uppercase, но и ненамного сложнее (из трёх плагинов ниже 4 кб внезапно провалился только один, самый простой). А вот что конкретно было - я уже не помню. Пришлось для выкладывания на сайте добивать размер до 4 кб константами :-)
...
Рейтинг: 0 / 0
При долгой работе переполняется память сервера Firebird 1.5.1.4481
    #39204323
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ariochvs815,

https://ibase.ru/udf_ok/ По просьбам телезрителей добавил ссылку в прилепленную тему.
...
Рейтинг: 0 / 0
При долгой работе переполняется память сервера Firebird 1.5.1.4481
    #39204459
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vs815Попробовал освобождать память в UDF - сервер упал. В логе написано следующее:

Что я сделал не правильно?

Сам подход изначально порочный, понимаю у тебя по запарке и от отчаяния, но тем не менее.

Первая проблема в том, что - КОГДА ты собираешься освобождать память? Твоя DLL не знает, когда сервер закончил с ней работать, в результате ты с большой вероятностью СНАЧАЛА освободишь память, а ПОТОМ уже попросишь сервер прочитать результат из памяти - которой уже не существует потом что она была ранее уже освобождена досрочно. И этот вопрос синхронизации чтения и уничтожения результата - ключевой.

Именно для этого введена пара ib_util_malloc / FREE_IT - сервер знает когда он прочитал результат и может его уничтожать и сам его и уничтожает.

Раз уж от меня пошли охотничьи байки, то

1. в FidoLook SL пробелма синхронизации была решщена другим образом, там плагины предоставляли три фиксированные стандартные процедуры, а ля OCX: перечислить-описать новые функции реализованные в этом плагине, вызвать функцию по имени и списку строковых параметров, освободить память из под конкретного параметра/результата. То есть втам была обратная модель, сервер не занимался самоосвобождением памяти и не предоставлял плагинам интерфейс для выделения её, наоборот он запрашивал у плагинов интерфейс для ее освобождения и вызывал его сам.

2. для усушки-утруски DLL до 2 КБ (когда на Дельфи впервые делеаешь такого рамера файлы глаза загораются и хочется жать до предела. Дожал...) мне пришлось выкинуть стандартный для D5 heap manager и заменить его на Microsoft LocalAlloc и прочее. В отличие от BorlandMM майкрософтские функции сделаны "для отладчика", при освобождении памяти она принудительно затирается. Внезапно оказалось, что fidolookSL СНАЧАЛА вызывает dll-free-memory, а уже ПОТОМ пытается читать результат. С обычными менеджерами памяти что в Дельфи, что в VC++ это не вызывало проблемы: освободив память они ее не затирали, и сервер мог прочитать и использовать результат-привидение.

3. Убедить автора исправить сервер ради идеологической чистоты и правильности не удалось. Возвращать в игру BorlandMM не хотелось, хотелось по прежнему минимального размера, для чего нужен был Windows LocalAlloc. В результате пришлось переделать DLL в такую довольно стрёмную схему.

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
var GlobalResult: string;

function DLL-Process-Function( name, parameters ): PChar;
var TmpResult: string;
begin
  .........вычисления....
  GlobalResult := TmpResult;
  Result := @GlobalResult[1];
end;



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

поскольку вызов вполнялся только из GUI, один вызов за раз - то всё работало.
и возможно такая схема бы работала с Firebird Classic

но с многопоточным SuperServer эта схема неработоспособна - два клиента одновременно из разных подключений вызовут UDF-фнкцию и одна из них обязательно убъёт результат другой...
Впрочем можно попробовать поиграть с глобальными threadvar вместо var, но это всё очень ненадёжно...
...
Рейтинг: 0 / 0
42 сообщений из 42, показаны все 2 страниц
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / При долгой работе переполняется память сервера Firebird 1.5.1.4481
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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