2016-06-28 5 views
16

우분투 14.10에서 llvm-symbolizer 프로그램은 /usr/bin/llvm-symbolizer-3.5으로 설치됩니다. 일반적으로 address sanitizer는 이라는 이진 파일을 PATH에 저장하려고합니다. 그러나 해결 방법으로 명시 적으로 ASAN_SYMBOLIZER_PATH을 설정하는 것이 가능했습니다. 따라서 환경에 ASAN_SYMBOLIZER_PATH=/usr/bin/llvm-symbolizer-3.5을 설정하면 주소 소독기가 계측 된 프로그램에서 기호화 된 오류를 인쇄 할 수 있습니다.버전 장식 바이너리에서 ASAN_SYMBOLIZER_PATH가 더 이상 작동하지 않는 이유

우분투 16.04에서 llvm-symbolizer 프로그램은 다시 /usr/bin/llvm-symbolizer-3.8이라는 버전 접미어로 설치됩니다. 그러나 ASAN_SYMBOLIZER_PATH 설정이 더 이상 작동하지 않는 것처럼 보입니다.

==18718==ERROR: External symbolizer path is set to '/usr/bin/llvm-symbolizer-3.8' which isn't a known symbolizer. Please set the path to the llvm-symbolizer binary or other known tool. 

이 동작이 변경 사람이 왜 알고 있나요, 또는 얼마나 이전 동작을 복원 : 아산 오류를 감지 할 때 다음과 같은 오류가 환경 설정 ASAN_SYMBOLIZER_PATH=/usr/bin/llvm-symbolizer-3.8과 아산 계측 프로그램을 생성 실행? 이것은 부당하게 제한적으로 보인다. 내가 ASAN을 가리키는 symbolizer 프로그램은 분명히 알려진 심볼 화기이며, 우분투 위임 된 버전 태그가 결국에는 발생합니다.

PATH을 조정하면 우분투에서 버전 장식없이 제공되는 llvm-symbolizer 바이너리가 제공되지 않으므로 여기서는 도움이되지 않습니다.

+0

이 문제가 발생한 다른 사용자에게는 이것이 [compiler_rt의이 변경 사항] [1]의 결과 인 것으로 나타납니다. 나는이 동작의 변경이 의도되었는지 또는 회귀인지를 결정하기 위해 검토를 핑 (ping)했습니다. [1] : http://reviews.llvm.org/D8285 – acm

+2

가장 쉬운 방법 : sudo ln -s /usr/bin/llvm-symbolizer-3.8/usr/bin/llvm-symbolizer' – Eraden

+1

@ Eraden 물론, 내 dev에 상자에서 작동하지만, CI 시스템에 대한 변경/usr/bin. – acm

답변

13

우분투의 LLVM 패키지에서, 의 바이너리를 /usr/lib/llvm-3.x/bin 경로에서 가져올 수 있으므로 PATH=/usr/lib/llvm-3.x/bin:$PATH [COMMAND] 트릭을 수행합니다. 나는 아직도이 변화가 compiler_rt의 회귀이지만 생각한다.

3
/LLVM-symbolizer

은 또한 LLVM-symbolizer - 4.0 (@Eraden 코멘트에서 복사)

작동

sudo를 에선 -s /usr/bin/llvm-symbolizer-3.8는/usr/빈