Мне удалось собрать jemalloc и связать с ним свой пример приложения, и он обнаруживает (намеренные) утечки памяти:
Код: Выделить всё
: Leak approximation summary: ~65536 bytes, ~104 objects, >= 1 context
: Run jeprof on dump output for leak detail
Исследуя, я обнаружил информацию о том, что это может быть проблемой в ARM из-за отсутствия информации о стеке вызовов и что мне следует использовать libunwind для получения лучшей функциональности стека вызовов (или какой-либо вообще).
Итак, я попытался собрать jemalloc с помощью --enable-prof-libunwind. Кажется, система сборки распознает его правильно:
Код: Выделить всё
install_suffix :
malloc_conf :
documentation : 1
shared libs : 1
static libs : 0
autogen : 0
debug : 0
stats : 1
experimental_smallocx : 0
prof : 1
prof-libunwind : 1
prof-libgcc : 0
prof-gcc : 0
fill : 1
Код: Выделить всё
Build-time option settings
config.cache_oblivious: true
config.debug: false
config.fill: true
config.lazy_lock: false
config.malloc_conf: ""
config.opt_safety_checks: false
config.prof: true
config.prof_libgcc: true
config.prof_libunwind: false
Мой MALLOC_CONF выглядит так
Код: Выделить всё
export MALLOC_CONF="prof:true,prof_leak:true,prof_final:true,lg_prof_sample:0,tcache:false,prof_prefix:/tmp/jemalloc,stats_print:true"
У GitHub Copilot были некоторые «идеи» по поводу отсутствующих символов в libunwind (unw_getcontext, unw_init_local, unw_step, unw_get_reg). Тем не менее, мне не удалось найти способ пересобрать libunwind, чтобы сделать эти символы доступными.
В чем может быть причина того, что сборка с опцией libunwind не работает?
Есть идеи, почему выходной файл jemalloc не содержит никакой информации об утечках памяти?
Подробнее здесь: https://stackoverflow.com/questions/798 ... -libunwind
Мобильная версия