2017-02-06 16 views
1

, 나는 실행 예외를 얻고있다 초기 도서관 목록에 처음 오지 마라. "Valgrind의, GCC 6.2.0 및 최근"-fsanitize = 주소 "

나는 valgrind가 실제로하는 일에 조금 우둔하다. 명령 'LDD의 file.exe가'는

linux-gate.so.1 => (0xb7755000) 
    libasan.so.3 => /usr/lib/i386-linux-gnu/libasan.so.3 (0xb7199000) 
    libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb6fdf000) 
    libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xb6fd8000) 
    librt.so.1 => /lib/i386-linux-gnu/librt.so.1 (0xb6fcf000) 
    libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xb6fb2000) 
    libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xb6f5c000) 
    /lib/ld-linux.so.2 (0x80092000) 
    libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xb6f3e000) 

어떤 힌트를 제공합니다?

+0

'LD_PRELOAD = libasan.so'에서도 작동합니까? – melpomene

+0

아니요. "오류가 발생했습니다 : LD_PRELOAD의 ld.so : object 'libasan.so'을 미리로드 할 수 없습니다 (공유 객체 파일을 열 수 없음) : 무시되었습니다." –

+0

'LD_PRELOAD = libasan.so.3'은 무엇입니까? (그리고 실패 할 경우'LD_PRELOAD =/usr/lib/i386-linux-gnu/libasan.so.3')? – melpomene

답변

2

Valgrind에서 위생 코드를 실행할 수 없습니다. libasan을 미리로드하는 문제를 해결하더라도 충돌하는 주소 공간 요구 사항이 발생합니다 (예 : Valgrind가 Asan 쉐도우 메모리에서 필요로하는 메모리 영역을 예약 할 때). 두 주소가 모두 일치하기 때문에 해결할 수 없습니다. Valgrind와 libasan에서 하드 코딩되었습니다. Asan 및 Tsan 또는 Asan 및 Msan에 대해 유사한 문제가 존재합니다 (즉, 동시에 활성화 할 수 없음). 새니 타이 저 (sanitizer)가 인상적인 성능 수치를 달성하는 데 매우 전문화되어 있으므로 수정이 어려울 것입니다.