есть особенность: бинарники, собранные с отладкой в GTK2 кажут утечку
остальные (qt4/5) - все ОК.
есть мнение, что "текет" именно в slackware.
(проверял на обоих 14.2 и 15.0, карент еще не трогал)
протестировал на ubuntu 22.x/23.x - там все нормально с "этим"
причем, бинарники, собранные в slackware - не текут в ubuntu
ИТАК, как промежуточный итог считаем, что:
- текут системные библиотеки у slackware
- текут именно gtk2
рабочий/develop дистр меняться не будет.
хотелось-бы разобраться чуть более подробно что/где/почему
и что-бы по возможности "обходить эти грабли".
советы/идеи/пендили?!
исходные:
- Код: Выделить всё
- - Lazarus 3.2.0/3.4.0 (от версии не зависит)
 - backend gtk2/qt4/qt5
 - fpc 3.2.2
 - slackware 14.2/15.0
 - qt4-4.8.7
 - qt5-5.12.8
 - gtk+2.24.31 (slackware-14.2) - текет
 - gtk+2.24.33 (slackware-15.0) - текет
 - gtk2-engines-2.21.0 (slackware)
 - gtk+2.24.33 (ubuntu 22.04.4) - не текет
 - gtk2-engines-2.20.2 (ubuntu 22.04.4)
в утечках "указывались" 2е мои функции,
- Код: Выделить всё
- - parser.check ()
 - form_icon_set()
реакция на "отключение" вызовов
- Код: Выделить всё
- //
 // form_icon_set() to on
 //
 3511 memory blocks allocated : 2120433/2126608
 3509 memory blocks freed : 2120209/2126384
 2 unfreed memory blocks : 224
 True heap size : 1933312
 True free heap : 1932608
 Should be : 1932704
 Call trace for block $00007F05DDD20FC0 size 112
 $00000000004662DF FormCreate, line 438 of unit1.pas -> form_icon_set()
 $000000000044F9B6 DOCREATE, line 922 of include/customform.inc
 Call trace for block $00007F05DDD1EEC0 size 112
 $00000000005E9FD4 INITKEYBOARDTABLES, line 3482 of gtk2/gtk2proc.inc
 $000000000041F046 $main, line 33 of prj1.lpr -> Application.Initialize()
 $000000000041EF60 $main, line 22 of prj1.lpr -> parser.check()
 //
 // form_icon_set() to off
 //
 3445 memory blocks allocated : 2111409/2117584
 3443 memory blocks freed : 2111185/2117360
 2 unfreed memory blocks : 224
 True heap size : 1933312
 True free heap : 1932608
 Should be : 1932704
 Call trace for block $00007FF1CFEA3FC0 size 112
 Call trace for block $00007FF1CFEA1EC0 size 112
 $00000000005E9E64 INITKEYBOARDTABLES, line 3482 of gtk2/gtk2proc.inc
 $000000000041F046 $main, line 33 of prj1.lpr -> Application.Initialize()
 $000000000041EF60 $main, line 22 of prj1.lpr -> parser.check()
 //
 // parser.check () to off
 // form_icon_set() to off
 //
 3396 memory blocks allocated : 2102397/2108336
 3394 memory blocks freed : 2102173/2108112
 2 unfreed memory blocks : 224
 True heap size : 1900544
 True free heap : 1899840
 Should be : 1899936
 Call trace for block $00007F395BF1BFC0 size 112
 Call trace for block $00007F395BF19EC0 size 112
 $00000000005E9E04 INITKEYBOARDTABLES, line 3482 of gtk2/gtk2proc.inc
 $000000000041EFED $main, line 33 of prj1.lpr -> Application.Initialize()
### UPDATE 1 ###
URL1
- Код: Выделить всё
- valgrind --tool=memcheck --leak-check=full --log-file=log.txt --show-reachable=yes --num-callers=50 ./xxx
 main$ grep leak log.txt -> void
 main$ grep error log.txt
 ==20136== Memcheck, a memory error detector
 ==20136== by 0x52C3674: gdk_error_trap_push (in /usr/lib64/libgdk-x11-2.0.so.0.2400.31)
 ==20136== by 0x52C3681: gdk_error_trap_push (in /usr/lib64/libgdk-x11-2.0.so.0.2400.31)
 ==20136== by 0x505F626: _dlerror_run (in /lib64/libdl-2.23.so)
 ==20136== by 0x4010503: _dl_catch_error (in /lib64/ld-2.23.so)
 ==20136== by 0x4010503: _dl_catch_error (in /lib64/ld-2.23.so)
 ==20136== by 0x505F570: _dlerror_run (in /lib64/libdl-2.23.so)
 ==20136== by 0x4010503: _dl_catch_error (in /lib64/ld-2.23.so)
 ==20136== by 0x4010503: _dl_catch_error (in /lib64/ld-2.23.so)
 ==20136== by 0x505F570: _dlerror_run (in /lib64/libdl-2.23.so)
 ==20136== by 0x4010503: _dl_catch_error (in /lib64/ld-2.23.so)
 ==20136== by 0x4010503: _dl_catch_error (in /lib64/ld-2.23.so)
 ==20136== by 0x505F570: _dlerror_run (in /lib64/libdl-2.23.so)
 ==20136== by 0x4010503: _dl_catch_error (in /lib64/ld-2.23.so)
 ==20136== by 0x4010503: _dl_catch_error (in /lib64/ld-2.23.so)
 ==20136== by 0x505F570: _dlerror_run (in /lib64/libdl-2.23.so)
 ==20136== For lists of detected and suppressed errors, rerun with: -s
 ==20136== ERROR SUMMARY: 36 errors from 36 contexts (suppressed: 0 from 0)
### UPDATE 2 ###
ой-вей! проявилась еще более интересная особенность:
- собираем "пустой проект" - ни чего не текет.
- запускаем "дырявый проект" (*) - в какой-то момент начинает течь.
- запускаем "пустой проект" - аналогично, начинает течь.
(*) - дело в том, что "сообщение об утечке" может появиться не сразу (как там в голове у "него" шарахнет), но если появилость - то всЁ, мы потекли...
дополнительно: замечено что из-за virtual-box иногда приходиться перегружать систему (начинают проявляться всякие хреньки в работе всей системы)
промежуточный ИТОГ:
- а собственно, подтверждает пред. выкладки: текет GTK2 в той или иной степени, причем с фишками и плюшками

