ASAN Un debugger de memoria en tu compilador - Akademy-es 2014
1. Sebastian Kügler <sebas@kde.org>, FrOSCon 2006
Akademy-es 2014 – Málaga Albert Astals Cid <aacid@kde.org>
ASAN
ASAN
Un debugger de memoria en tu compilador
Albert Astals Cid
2. Sebastian Kügler <sebas@kde.org>, FrOSCon 2006
Akademy-es 2014 – Málaga Albert Astals Cid <aacid@kde.org>
ASAN
¿Quien es Albert Astals Cid?
Ingeniero en Informática por la UPC
Traductor en KDE desde 2002
Programador en KDE desde 2003
Mantenedor de KPDF/Okular desde 2004
Miembro de KDE eV desde 2005, actualmente en la Junta Directiva
Miembro fundador de KDE España, ex-presidente
NO SOY UN EXPERTO EN ASAN
3. Sebastian Kügler <sebas@kde.org>, FrOSCon 2006
Akademy-es 2014 – Málaga Albert Astals Cid <aacid@kde.org>
ASAN
¿Que es ASAN?
AddressSanitizer (aka ASAN) is a memory error detector for C/C++.
It finds:
Use after free (dangling pointer dereference)
Heap buffer overflow
Stack buffer overflow
Global buffer overflow
Use after return
Initialization order bugs
4. Sebastian Kügler <sebas@kde.org>, FrOSCon 2006
Akademy-es 2014 – Málaga Albert Astals Cid <aacid@kde.org>
ASAN
¿Que es ASAN? (II)
This tool is very fast. The average slowdown of the instrumented
program is ~2x.
The tool works on x86 Linux and Mac, and ARM Android.
It supports gcc (>=4.8) and clang (>=3.1) (clang support is better)
It's a Google project
5. Sebastian Kügler <sebas@kde.org>, FrOSCon 2006
Akademy-es 2014 – Málaga Albert Astals Cid <aacid@kde.org>
ASAN
¿Como uso ASAN?
-fsanitize=address -g -fno-omit-frame-pointer
¡Fácil! Vámonos a casa :D
¡Esperad!
Tengo ejemplos
7. Sebastian Kügler <sebas@kde.org>, FrOSCon 2006
Akademy-es 2014 – Málaga Albert Astals Cid <aacid@kde.org>
ASAN
¡Pero eso es
una mierda!
¡Haberlo
dicho antes!
Tenemos que exportar un par de variables de entorno:
export ASAN_SYMBOLIZER_PATH=/usr/bin/llvm-symbolizer-3.4
export ASAN_OPTIONS=symbolize=1
12. Sebastian Kügler <sebas@kde.org>, FrOSCon 2006
Akademy-es 2014 – Málaga Albert Astals Cid <aacid@kde.org>
ASAN
Valores sin inicializar
13. Sebastian Kügler <sebas@kde.org>, FrOSCon 2006
Akademy-es 2014 – Málaga Albert Astals Cid <aacid@kde.org>
ASAN
¿Y valgrind?
Valgrind/memcheck es una herramienta muy util
Es leeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeento :(
No necesita recompilación :)
Continua despues del primer error :)
Encuentra memory leaks :)
Encuentra memoria sin inicializar :) (MSAN no me funciona)
No encuentra accesos fuera de pila/globales :(
Pero que te
ha hecho el
dragón!?!?!