gcc segmentation-fault instrumentation memory-corruption

AddressSanitizer Crash en GCC 4.8



segmentation-fault instrumentation (2)

Acabo de probar la nueva característica interesante de GCC 4.8, AddressSanitizer.

El programa

#include <iostream> int main(int argc, const char * argv[], const char * envp[]) { int *x = nullptr; int y = *x; std::cout << y << std::endl; return 0; }

compilar encontrar usando

g++-4.8 -std=gnu++0x -g -fsanitize=address -fno-omit-frame-pointer -Wall ~/h.cpp -o h

pero cuando ejecuto el programa, obtengo

ASAN:SIGSEGV ================================================================= ==7531== ERROR: AddressSanitizer crashed on unknown address 0x000000000000 (pc 0x000000400aac sp 0x7fff11ce0fd0 bp 0x7fff11ce1000 T0) AddressSanitizer can not provide additional info. #0 0x400aab (/home/per/h+0x400aab) #1 0x7fc432e1b76c (/lib/x86_64-linux-gnu/libc-2.15.so+0x2176c) Stats: 0M malloced (0M for red zones) by 0 calls Stats: 0M realloced by 0 calls Stats: 0M freed by 0 calls Stats: 0M really freed by 0 calls Stats: 0M (0 full pages) mmaped in 0 calls mmaps by size class: mallocs by size class: frees by size class: rfrees by size class: Stats: malloc large: 0 small slow: 0

Esto parece una forma incorrecta de informar un error de memoria. ¿Me he perdido algunas banderas de compilación o enlace?


Esta es la forma prevista de informar una deferencia NULA. Puede ejecutar la salida del programa a través de asan_symbolize.py (debe estar presente en su árbol GCC) para obtener nombres de símbolos y números de línea en el archivo fuente.