2016-06-09 9 views
0

지난 2 년 동안 gcc-4.8.2와 ASAN을 아무런 문제없이 사용하고있었습니다. LSAN과 같은 새로운 기능을 사용하기 위해 gcc-5.2로 옮겼습니다. 와 응용 프로그램을 구축 한 후 GCC-5.2는 충돌로 이어지는 더 이상 __cxa_throw을 가로 챌 수없는, 상세과 아산을 실행 한 후이 발견은 = 1gcc-5.2가있는 ASAN이 예외를 가로 챌 수 없음

==11314==AddressSanitizer: failed to intercept '__isoc99_printf' 
==11314==AddressSanitizer: failed to intercept '__isoc99_sprintf' 
==11314==AddressSanitizer: failed to intercept '__isoc99_snprintf' 
==11314==AddressSanitizer: failed to intercept '__isoc99_fprintf' 
==11314==AddressSanitizer: failed to intercept '__isoc99_vprintf' 
==11314==AddressSanitizer: failed to intercept '__isoc99_vsprintf' 
==11314==AddressSanitizer: failed to intercept '__isoc99_vsnprintf' 
==11314==AddressSanitizer: failed to intercept '__isoc99_vfprintf' 
==11314==AddressSanitizer: failed to intercept 'backtrace' 
==11314==AddressSanitizer: failed to intercept '__cxa_throw' 
==11314==AddressSanitizer: libc interceptors initialized 
|| `[0x10007fff8000, 0x7fffffffffff]` || HighMem || 
|| `[0x02008fff7000, 0x10007fff7fff]` || HighShadow || 
|| `[0x00008fff7000, 0x02008fff6fff]` || ShadowGap || 
|| `[0x00007fff8000, 0x00008fff6fff]` || LowShadow || 
|| `[0x000000000000, 0x00007fff7fff]` || LowMem  || 
MemToShadow(shadow): 0x00008fff7000 0x000091ff6dff 0x004091ff6e00 0x02008fff6fff 
redzone=16 
max_redzone=2048 
quarantine_size=256M 
malloc_context_size=30 
SHADOW_SCALE: 3 
SHADOW_GRANULARITY: 8 
SHADOW_OFFSET: 7fff8000 
==11314==Installed the sigaction for signal 11 
==11314==T0: stack [0x7ffd377ce000,0x7ffd37fce000) size 0x800000; local=0x7ffd37fcb63c 
==11314==AddressSanitizer Init done 

그리고 네 우리는 정적으로 된 libstdc 링크 ++하지만이 문제 아니었다 gcc-4.8.2 ASAN은 모든 것을 제대로 가로 챌 수있었습니다.

+0

여기에 질문이 없습니다. – melpomene

+0

죄송합니다.이 문제를 해결하는 방법을 아는 사람이 있습니까? –

+0

실행 환경에 대한 설명과 함께 최소한의 "작업"예제를 게시 할 수 있습니까? – Tim

답변

0

이것은 libasan의 잘 알려진 허위 경고입니다 (예 : https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58680 참조). 불행히도 조만간 수정 될 예정입니다. 그런데 왜 아산을 길게 늘리는가? 결국 일반 사용자는 자세한 정보에 관심을 가져서는 안됩니다.