powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Linux.Rio. Dr. Memory. Leaks
22 сообщений из 22, страница 1 из 1
Linux.Rio. Dr. Memory. Leaks
    #39749711
cptngrb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проверяю в потоке размер своего приложения. Вроде все чищу . Ткните носом, где утечка?

Лог доктора

~~Dr.M~~ Error #7: LEAK 32 direct bytes 0x0000000000c76b90-0x0000000000c76bb0 + 0 indirect bytes
~~Dr.M~~ # 0 replace_malloc [/drmemory_package/common/alloc_replace.c:2577]
~~Dr.M~~ # 1 System::SysGetMem [./System.pas:4665]
~~Dr.M~~ # 2 System::_GetMem [./System.pas:4773]
~~Dr.M~~ # 3 System::TObject::NewInstance [./System.pas:17394]
~~Dr.M~~ # 4 System::_ClassCreate [./System.pas:18760]
~~Dr.M~~ # 5 System::Classes::TFileStream::TFileStream [./System.Classes.pas:1078]
~~Dr.M~~ # 6 Ucontrolap::TControlAP::CheckSizeOP [./uControlAP.pas:59]
~~Dr.M~~ # 7 Ucontrolap::TControlAP::Execute [./uControlAP.pas:191]
~~Dr.M~~ # 8 System::Classes::ThreadProc [./System.Classes.pas:15040]
~~Dr.M~~ # 9 System::ThreadWrapper [./System.pas:24888]
~~Dr.M~~ #10 libpthread.so.0!start_thread
~~Dr.M~~ #11 libc.so.6!__clone [../sysdeps/unix/sysv/linux/x86_64/clone.S:109]
~~Dr.M~~
~~Dr.M~~ Error #8: POSSIBLE LEAK 50 direct bytes 0x0000000000c7c6b0-0x0000000000c7c6e2 + 0 indirect bytes
~~Dr.M~~ # 0 replace_malloc [/drmemory_package/common/alloc_replace.c:2577]
~~Dr.M~~ # 1 System::SysGetMem [./System.pas:4665]
~~Dr.M~~ # 2 System::_GetMem [./System.pas:4773]
~~Dr.M~~ # 3 System::_NewUnicodeString [./System.pas:25144]
~~Dr.M~~ # 4 System::_UStrAsg [./System.pas:26120]
~~Dr.M~~ # 5 System::Classes::TFileStream::TFileStream [./System.Classes.pas:9007]
~~Dr.M~~ # 6 System::Classes::TFileStream::TFileStream [./System.Classes.pas:8979]
~~Dr.M~~ # 7 Ucontrolap::TControlAP::CheckSizeOP [./uControlAP.pas:59]
~~Dr.M~~ # 8 Ucontrolap::TControlAP::Execute [./uControlAP.pas:191]
~~Dr.M~~ # 9 System::Classes::ThreadProc [./System.Classes.pas:15040]
~~Dr.M~~ #10 System::ThreadWrapper [./System.pas:24888]
~~Dr.M~~ #11 libpthread.so.0!start_thread


Сама процедура

Код: pascal
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.
function TControlAP.CheckSizeOP: boolean;
var
  PageCount: int64; //нужно вычислить сколько страниц памяти занимает приложение
  Reader: TStreamReader;
  FSReader: TFileStream;
  Line: String;
  Ch: Char;
  ready: byte;

begin
  Result:= False;

  ready:= 0;
  PageCount:= 0;
  if FileExists(FNameLinux) then
  begin
    FSReader:= TFileStream.Create(FNameLinux, fmOpenRead or fmShareDenyNone);
    try
      Reader := TStreamReader.Create(FSReader, TEncoding.UTF8);
      try
        if not Reader.EndOfStream then
        begin
          while Reader.Peek() >= 0 do
          begin
            Ch := Char(Reader.Read());
            if Ch = ' ' then inc(ready);
            case ready of
            1: line:= line + ch;

            2: break;
            end;
          end;
          Reader.Close();
        end;

      finally
         FreeAndNil(Reader);
      end;
    finally
      FreeAndNil(FSReader);
    end;

    try
      if  TryStrToInt64(Line, PageCount) then
      if FSizeOP < ((PageCount * FSizePage) div 1048576) then
      Result:= True;
    except
      on E:Exception do
      begin
        WRITE_LOGER.WriteLog(FormatDateTime('yyyy_mm_dd_hh:nn:ss', now)+' (!ОШИБКА) Проверка размера ОП:' + E.Message);
      end;
    end;
  end;
end;
...
Рейтинг: 0 / 0
Linux.Rio. Dr. Memory. Leaks
    #39749716
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cptngrbВроде все чищу. Ткните носом, где утечка?

Это ты чистишь. А TStream? Ты смотрел в исходники его конструктора, которые называются в
логе? VCL сама по себе полна багов.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Linux.Rio. Dr. Memory. Leaks
    #39749754
cptngrb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а TStream VCL?
мне казалось, что уж базовые классы и т.п. должны работать как часы.
правда под Linux всякое может быть.
...
Рейтинг: 0 / 0
Linux.Rio. Dr. Memory. Leaks
    #39749774
cptngrb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov, Дмитрий в Dr.Memory куча параметров, если запустить по умолчанию, то доктор валиться и советует запустить с параметром -light
default: false
This option enables a lightweight mode that detects unaddressable accesses, free/delete/delete[] mismatches, and GDI API usage errors in Windows, but not uninitialized reads or memory leaks.

т.е. утечки искать не будет.
А мне как раз утечки и нужно искать
...
Рейтинг: 0 / 0
Linux.Rio. Dr. Memory. Leaks
    #39749779
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cptngrbа TStream VCL?
мне казалось, что уж базовые классы и т.п. должны работать как часы.

Наивный...

Кстати, Dr.Memory может плохо работать с дельфийскими экзешниками, поскольку умолчательный
Мemomry Мanager использует свой внутренний пул, который не освобождается до конца.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Linux.Rio. Dr. Memory. Leaks
    #39749785
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cptngrbА мне как раз утечки и нужно искать

Насколько я знаю, FastMM нынче является штатным ММ и он способен делать это
самостоятельно. Рекомендую.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Linux.Rio. Dr. Memory. Leaks
    #39749787
cptngrb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov, FastMM говорит, что все отлично, а на практике ОП растет, медленно, но верно
...
Рейтинг: 0 / 0
Linux.Rio. Dr. Memory. Leaks
    #39749796
cptngrb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и как использовать FastMM в Linux не очень понятно
...
Рейтинг: 0 / 0
Linux.Rio. Dr. Memory. Leaks
    #39749803
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovНасколько я знаю, FastMM нынче является штатным ММ и он способен делать это
самостоятельно.
Он штатный только на Win32/64 и macOS.
...
Рейтинг: 0 / 0
Linux.Rio. Dr. Memory. Leaks
    #39749805
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cptngrbFastMM говорит, что все отлично, а на практике ОП растет, медленно, но верно

Значит не факт, что это утечка. Фрагментация или пулинг имеют такие же симптомы. Смотри
демку Usage Tracker. Кажется, там есть возможность в любой момент узнать какая память и
кем выделена. Ждёшь пока она отрастёт, снимаешь дамп и копаешь на предмет расхождения
фактического выделения с ожидаемым.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Linux.Rio. Dr. Memory. Leaks
    #39750100
cptngrb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov, Usage Tracker тоже только для Windows. Но спасибо, не знал.
...
Рейтинг: 0 / 0
Linux.Rio. Dr. Memory. Leaks
    #39750317
cptngrb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dr. Memory утечки (вроде), но go to adress выдает вопросы ??????? вместо кода

вот пример лога

# Suppression for Error #3
LEAK
name=Error #3 (update to meaningful name)
libdrmemorylib.so!replace_malloc
Project1!System::SysGetMem
Project1!System::_ReallocMem
Project1!System::DynArraySetLength
Project1!System::_DynArraySetLength
Project1!System::Internal::Icu::TCacheCollator::AddCollator
Project1!System::Internal::Icu::TCacheCollator::GetCollator
Project1!System::Internal::Icu::GetCollator
Project1!System::Sysutils::AnsiCompareText
Project1!System::Classes::TStringList::CompareStrings
Project1!System::Classes::TStringList::Find
Project1!System::Classes::TStringList::AddObject

## Mod+offs-style suppression for Error #3:
LEAK
name=Error #3 (update to meaningful name)
<libdrmemorylib.so+0x482c0>
<Project1+0x2cee5>
<Project1+0x2d10e>
<Project1+0x3edd6>
<Project1+0x3b8ae>
<Project1+0x4e470>
<Project1+0x4d8cb>
<Project1+0x4d9cf>
<Project1+0x70a2b>
<Project1+0x14954a>
<Project1+0x14a079>
<Project1+0x149630>

# Suppression for Error #4
LEAK
name=Error #4 (update to meaningful name)
libdrmemorylib.so!replace_malloc
Project1!System::SysGetMem
Project1!System::_ReallocMem
Project1!System::DynArraySetLength
Project1!System::_DynArraySetLength
Project1!System::Internal::Icu::TCacheCollator::AddCollator
Project1!System::Internal::Icu::TCacheCollator::GetCollator
Project1!System::Internal::Icu::GetCollator
Project1!System::Sysutils::AnsiStrIComp
Project1!System::Sysutils::InternalAnsiStrLComp
Project1!System::Sysutils::AnsiStrLIComp
Project1!System::Classes::TStringList::LinearIndexOfName

## Mod+offs-style suppression for Error #4:
LEAK
name=Error #4 (update to meaningful name)
<libdrmemorylib.so+0x482c0>
<Project1+0x2cee5>
<Project1+0x2d10e>
<Project1+0x3edd6>
<Project1+0x3b8ae>
<Project1+0x4e470>
<Project1+0x4d8cb>
<Project1+0x4d9cf>
<Project1+0x71106>
<Project1+0x713ce>
<Project1+0x715c8>
<Project1+0x18ad87>

В ручном режиме не удалось добежать))) до этого адреса.
...
Рейтинг: 0 / 0
Linux.Rio. Dr. Memory. Leaks
    #39750325
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cptngrbgo to adressВы же переходите считая от HInstance?
...
Рейтинг: 0 / 0
Linux.Rio. Dr. Memory. Leaks
    #39750355
cptngrb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_,
да)
...
Рейтинг: 0 / 0
Linux.Rio. Dr. Memory. Leaks
    #39750365
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cptngrbUsage Tracker тоже только для Windows.

Не вижу в нём ничего платформозависимого. И ты бы всё же попробовал FullDebugMode...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Linux.Rio. Dr. Memory. Leaks
    #39750379
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovНе вижу в нём ничего платформозависимого.
Он FastMM-зависимый, который в свою очередь...
...
Рейтинг: 0 / 0
Linux.Rio. Dr. Memory. Leaks
    #39750388
Фэйтл Эра
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev AlexeyDimitry SibiryakovНасколько я знаю, FastMM нынче является штатным ММ и он способен делать это
самостоятельно.
Он штатный только на Win32/64 и macOS.

А просто подключить модуль FastMM4 - нельзя? Нештатно.
...
Рейтинг: 0 / 0
Linux.Rio. Dr. Memory. Leaks
    #39750391
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev AlexeyОн FastMM-зависимый, который в свою очередь...
Это, в общем-то, практически без разницы. Даже древний ММ из Дельфи 1 (и Борланд
Паскаль) имел методы для получения карты внутреннего пула. Разве что с выяснением "откуда
именно блоки были выделены" пришлось бы повозиться.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Linux.Rio. Dr. Memory. Leaks
    #39750411
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фэйтл ЭраА просто подключить модуль FastMM4 - нельзя?
Подключить можно, но работать он не будет.
Dimitry SibiryakovЭто, в общем-то, практически без разницы.
Совершенно разное API для диагностической информации у FastMM и того, что было до него. А для других платформ в RTL вообще ничего своего нет - все вызовы переадресуются системе, соответственно там ни о каком юсейдж трекинге и речь быть не может (если только самому прослойку не писать).
...
Рейтинг: 0 / 0
Linux.Rio. Dr. Memory. Leaks
    #39750438
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev AlexeyА для других платформ в RTL вообще ничего своего нет - все вызовы переадресуются системе

Это-то как раз был бы самый простой случай, в котором Доктор работал бы прекрасно и
единственной проблемой было бы сгенерировать отладочную информацию в нужном ему формате
DWARF2.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Linux.Rio. Dr. Memory. Leaks
    #39750639
cptngrb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FastMM работает с fastmmfulldebugmode64.dll или как-то так, и причем тут fastmm, вроде под линукс свой менеджер памяти, хотя может и туплю
...
Рейтинг: 0 / 0
Linux.Rio. Dr. Memory. Leaks
    #39750693
cptngrb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вообщем нашел по адресам процедуры, в которых утечка. Оказался FireDAC. Теперь задам вопрос в профильной теме, что да как. Всем спасибо
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Linux.Rio. Dr. Memory. Leaks
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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