Асан не сообщает информацию об утечке

Я пишу простую программу на С++, которая использует новую функцию и не использует функцию удаления, затем я использую asan, но это не отчет.

#include <iostream>
#include <stdint.h>

using namespace std;

int main()
{
    int *p = new int[50];
    for (uint32_t i = 0; i < 50; ++i)
    {
        *(p + i ) = i;
    }
    cout << *p << endl;
    return 0;
}

затем ./g++ main.cpp -lasan -L/root/local/lib64/ -fsanitize=address -fno-omit-frame-pointer -g

и вывести 0, но не сообщать об удалении утечки. Почему ?

если я использую export LD_PRELOAD=/usr/local/lib64/libasan.so.0.0.0, то ./g++ main.cpp отчет

g++: internal compiler error: Segmentation fault (program collect2)
0x40c400 execute
    ../../gcc/gcc.c:2823
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <http://gcc.gnu.org/bugs.html> for instructions.

это похоже на дамп ядра collect2, поэтому я запускаю cd libexec/gcc/x86_64-unknown-linux-gnu/4.8.5/ && ./colloct2, отчитываюсь Segmentation fault (core dumped)

Я использую источник для установки gcc-4.8.5, centos 6.


person zhaozheng    schedule 28.11.2019    source источник
comment
Разве вы не должны использовать LD_PRELOAD при запуске своей программы, а не при ее сборке?   -  person Some programmer dude    schedule 28.11.2019
comment
Собирается нормально, если экспорт LD_PRELOAD=. Но не сообщайте об утечке памяти.   -  person zhaozheng    schedule 28.11.2019


Ответы (1)


gcc-4_8-branch даже не содержит каталога libsanitizer/lsan/. Пожалуйста, попробуйте более свежие версии GCC. по https://github.com/google/sanitizers/issues/699

person zhaozheng    schedule 28.11.2019