Определение того, является ли утечка памяти ложным срабатываниемC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Определение того, является ли утечка памяти ложным срабатыванием

Сообщение Anonymous »

У меня есть простая программа, написанная на C++, которая строится в следующих конфигурациях:
  • Использование/связывание с libstdc++
  • Использование/связывание с libc++
Я запускаю обе сборки с использованием valgrind следующим образом:
valgrind --leak-check=full --show-reachable=yes --track-origins=yes --log-file=test_program.log -v ./test_program
Версия libstdc++ работает и не приводит к утечкам памяти:

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

==
== HEAP SUMMARY:
==     in use at exit: 0 bytes in 0 blocks
==   total heap usage: 24,813,106 allocs, 24,813,106 frees, 51,325,970,073 bytes allocated
==
== All heap blocks were freed -- no leaks are possible
==
== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
Однако при запуске libc++ обнаруживается утечка памяти:

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

==434036== HEAP SUMMARY:
==434036==     in use at exit: 16 bytes in 1 blocks
==434036==   total heap usage: 317,709,577 allocs, 317,709,576 frees, 645,827,127,171 bytes allocated
==434036==
==434036== Searching for pointers to 1 not-freed blocks
==434036== Checked 401,408 bytes
==434036==
==434036== 16 bytes in 1 blocks are still reachable in loss record 1 of 1
==434036==    at 0x484DA83: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==434036==    by 0x49A365F: ??? (in /usr/lib/llvm-14/lib/libc++abi.so.1.0)
==434036==    by 0x49A24E9: __cxa_get_globals (in /usr/lib/llvm-14/lib/libc++abi.so.1.0)
==434036==    by 0x49A53F6: __cxa_throw (in /usr/lib/llvm-14/lib/libc++abi.so.1.0)
==434036==    by 0x2EE7B3: goal::details::special_node::value() const (in workspace/goal/goal_test)
==434036==    by 0x2DC349: goal::details::caller_node::value() const (in workspace/goal/goal_test)
==434036==    by 0x50AC40: double goal::details::arg_node::process const&) (in workspace/goal/goal_test)
==434036==    by 0x45A79C: bool execute_test_base() (in workspace/goal/goal_test)
==434036==    by 0x2322A0: main (in workspace/goal/goal_test)
==434036==
==434036== LEAK SUMMARY:
==434036==    definitely lost: 0 bytes in 0 blocks
==434036==    indirectly lost: 0 bytes in 0 blocks
==434036==      possibly lost: 0 bytes in 0 blocks
==434036==    still reachable: 16 bytes in 1 blocks
==434036==         suppressed: 0 bytes in 0 blocks
==434036==
==434036== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
У меня есть еще две сборки программы:
  • Использование/связывание с libstdc++ с ASAN/ LSAN/UBSAN/TSAN
  • Использование/связывание с libc++ с ASAN/LSAN/UBSAN/TSAN
    < /ol>
    При их запуске ни один из них не вызывает ошибок или предупреждений дезинфицирующего средства.
    Использованные компиляторы:
  • g++-13 (Ubuntu 13.1.0-8ubuntu1~22.04) 13.1.0
  • clang версия 20.0.0git
Утечка valgrind наблюдается в обоих компиляторах только при компоновке с libc++.

Вопросы: Может ли утечка из valgrind является ложным срабатыванием, и что еще можно сделать, чтобы убедиться в ее достоверности?

Подробнее здесь: https://stackoverflow.com/questions/791 ... e-positive
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Определение того, является ли утечка памяти ложным срабатыванием
    Anonymous » » в форуме C++
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Определение того, является ли утечка памяти ложным срабатыванием
    Anonymous » » в форуме C++
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Определение того, является ли утечка памяти ложным срабатыванием
    Anonymous » » в форуме C++
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Определение того, является ли утечка памяти ложным срабатыванием
    Anonymous » » в форуме C++
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Является ли «TypedArray должен быть переработан» ложным срабатыванием в Lint при использовании try-with-resources?
    Anonymous » » в форуме Android
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous

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