|
|
|
Linux.Rio. Dr. Memory. Leaks
|
|||
|---|---|---|---|
|
#18+
Проверяю в потоке размер своего приложения. Вроде все чищу . Ткните носом, где утечка? Лог доктора ~~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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2018, 17:43 |
|
||
|
Linux.Rio. Dr. Memory. Leaks
|
|||
|---|---|---|---|
|
#18+
cptngrbВроде все чищу. Ткните носом, где утечка? Это ты чистишь. А TStream? Ты смотрел в исходники его конструктора, которые называются в логе? VCL сама по себе полна багов. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2018, 17:49 |
|
||
|
Linux.Rio. Dr. Memory. Leaks
|
|||
|---|---|---|---|
|
#18+
а TStream VCL? мне казалось, что уж базовые классы и т.п. должны работать как часы. правда под Linux всякое может быть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2018, 18:29 |
|
||
|
Linux.Rio. Dr. Memory. Leaks
|
|||
|---|---|---|---|
|
#18+
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. т.е. утечки искать не будет. А мне как раз утечки и нужно искать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2018, 18:42 |
|
||
|
Linux.Rio. Dr. Memory. Leaks
|
|||
|---|---|---|---|
|
#18+
cptngrbа TStream VCL? мне казалось, что уж базовые классы и т.п. должны работать как часы. Наивный... Кстати, Dr.Memory может плохо работать с дельфийскими экзешниками, поскольку умолчательный Мemomry Мanager использует свой внутренний пул, который не освобождается до конца. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2018, 18:45 |
|
||
|
Linux.Rio. Dr. Memory. Leaks
|
|||
|---|---|---|---|
|
#18+
cptngrbА мне как раз утечки и нужно искать Насколько я знаю, FastMM нынче является штатным ММ и он способен делать это самостоятельно. Рекомендую. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2018, 18:49 |
|
||
|
Linux.Rio. Dr. Memory. Leaks
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, FastMM говорит, что все отлично, а на практике ОП растет, медленно, но верно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2018, 18:53 |
|
||
|
Linux.Rio. Dr. Memory. Leaks
|
|||
|---|---|---|---|
|
#18+
и как использовать FastMM в Linux не очень понятно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2018, 19:10 |
|
||
|
Linux.Rio. Dr. Memory. Leaks
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovНасколько я знаю, FastMM нынче является штатным ММ и он способен делать это самостоятельно. Он штатный только на Win32/64 и macOS. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2018, 19:17 |
|
||
|
Linux.Rio. Dr. Memory. Leaks
|
|||
|---|---|---|---|
|
#18+
cptngrbFastMM говорит, что все отлично, а на практике ОП растет, медленно, но верно Значит не факт, что это утечка. Фрагментация или пулинг имеют такие же симптомы. Смотри демку Usage Tracker. Кажется, там есть возможность в любой момент узнать какая память и кем выделена. Ждёшь пока она отрастёт, снимаешь дамп и копаешь на предмет расхождения фактического выделения с ожидаемым. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2018, 19:21 |
|
||
|
Linux.Rio. Dr. Memory. Leaks
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, Usage Tracker тоже только для Windows. Но спасибо, не знал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2018, 12:22 |
|
||
|
Linux.Rio. Dr. Memory. Leaks
|
|||
|---|---|---|---|
|
#18+
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> В ручном режиме не удалось добежать))) до этого адреса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2018, 16:40 |
|
||
|
Linux.Rio. Dr. Memory. Leaks
|
|||
|---|---|---|---|
|
#18+
cptngrbgo to adressВы же переходите считая от HInstance? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2018, 16:47 |
|
||
|
Linux.Rio. Dr. Memory. Leaks
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_, да) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2018, 17:20 |
|
||
|
Linux.Rio. Dr. Memory. Leaks
|
|||
|---|---|---|---|
|
#18+
cptngrbUsage Tracker тоже только для Windows. Не вижу в нём ничего платформозависимого. И ты бы всё же попробовал FullDebugMode... Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2018, 17:33 |
|
||
|
Linux.Rio. Dr. Memory. Leaks
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovНе вижу в нём ничего платформозависимого. Он FastMM-зависимый, который в свою очередь... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2018, 17:46 |
|
||
|
Linux.Rio. Dr. Memory. Leaks
|
|||
|---|---|---|---|
|
#18+
Kazantsev AlexeyDimitry SibiryakovНасколько я знаю, FastMM нынче является штатным ММ и он способен делать это самостоятельно. Он штатный только на Win32/64 и macOS. А просто подключить модуль FastMM4 - нельзя? Нештатно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2018, 17:51 |
|
||
|
Linux.Rio. Dr. Memory. Leaks
|
|||
|---|---|---|---|
|
#18+
Kazantsev AlexeyОн FastMM-зависимый, который в свою очередь... Это, в общем-то, практически без разницы. Даже древний ММ из Дельфи 1 (и Борланд Паскаль) имел методы для получения карты внутреннего пула. Разве что с выяснением "откуда именно блоки были выделены" пришлось бы повозиться. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2018, 17:53 |
|
||
|
Linux.Rio. Dr. Memory. Leaks
|
|||
|---|---|---|---|
|
#18+
Фэйтл ЭраА просто подключить модуль FastMM4 - нельзя? Подключить можно, но работать он не будет. Dimitry SibiryakovЭто, в общем-то, практически без разницы. Совершенно разное API для диагностической информации у FastMM и того, что было до него. А для других платформ в RTL вообще ничего своего нет - все вызовы переадресуются системе, соответственно там ни о каком юсейдж трекинге и речь быть не может (если только самому прослойку не писать). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2018, 18:14 |
|
||
|
Linux.Rio. Dr. Memory. Leaks
|
|||
|---|---|---|---|
|
#18+
Kazantsev AlexeyА для других платформ в RTL вообще ничего своего нет - все вызовы переадресуются системе Это-то как раз был бы самый простой случай, в котором Доктор работал бы прекрасно и единственной проблемой было бы сгенерировать отладочную информацию в нужном ему формате DWARF2. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2018, 19:28 |
|
||
|
Linux.Rio. Dr. Memory. Leaks
|
|||
|---|---|---|---|
|
#18+
FastMM работает с fastmmfulldebugmode64.dll или как-то так, и причем тут fastmm, вроде под линукс свой менеджер памяти, хотя может и туплю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2018, 10:49 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39750438&tid=2039988]: |
0ms |
get settings: |
5ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
156ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
35ms |
get tp. blocked users: |
1ms |
| others: | 201ms |
| total: | 423ms |

| 0 / 0 |
