Jemalloc: настройка --enable-prof-libunwind, но jemalloc.so не поддерживает prof_libunwindC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Jemalloc: настройка --enable-prof-libunwind, но jemalloc.so не поддерживает prof_libunwind

Сообщение Anonymous »

Я пытаюсь устранить проблемы с памятью во встроенной системе Linux (приложение C++). Я хочу использовать для этого jemalloc.
Мне удалось собрать jemalloc и связать с ним свой пример приложения, и он обнаруживает (намеренные) утечки памяти:

Код: Выделить всё

: Leak approximation summary: ~65536 bytes, ~104 objects, >= 1 context
: Run jeprof on dump output for leak detail
Однако, когда я запускаю jeprof для анализа выходного файла, информация об утечке памяти вообще не отображается.
Исследуя, я обнаружил информацию о том, что это может быть проблемой в 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
что означает отсутствие поддержки libunwind.
Мой 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"
Я связываюсь с libunwind и использую флаг компоновщика -g.
У GitHub Copilot были некоторые «идеи» по поводу отсутствующих символов в libunwind (unw_getcontext, unw_init_local, unw_step, unw_get_reg). Тем не менее, мне не удалось найти способ пересобрать libunwind, чтобы сделать эти символы доступными.
В чем может быть причина того, что сборка с опцией libunwind не работает?
Есть идеи, почему выходной файл jemalloc не содержит никакой информации об утечках памяти?

Подробнее здесь: https://stackoverflow.com/questions/798 ... -libunwind
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»