27

Ubuntu 14.10 では、llvm-symbolizerプログラムは としてインストールされ/usr/bin/llvm-symbolizer-3.5ます。通常、アドレス サニタイザーはllvm-symbolizerinという名前のバイナリを探しますPATH。ただし、回避策として、明示的に設定することが可能でしたASAN_SYMBOLIZER_PATH。そのため、環境で設定ASAN_SYMBOLIZER_PATH=/usr/bin/llvm-symbolizer-3.5すると、アドレスサニタイザーがインストルメント化されたプログラムが記号化されたエラーを出力できるようになります。

Ubuntu 16.04 では、llvm-symbolizerプログラムはバージョン サフィックスを付けて再度インストールされ、現在は/usr/bin/llvm-symbolizer-3.8. ただし、ASAN_SYMBOLIZER_PATH設定が機能しなくなったようです。環境で set を使用して ASAN インストルメント化プログラムを実行すると、ASANASAN_SYMBOLIZER_PATH=/usr/bin/llvm-symbolizer-3.8がエラーを検出したときに次のエラーが生成されます。

==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 に指摘したシンボライザー プログラムは間違いなく既知のシンボライザーであり、最後に Ubuntu の強制バージョン タグがたまたまあるだけです。

Ubuntu はバージョン装飾のないバイナリをPATH出荷しないため、ここでは調整は役に立たないことに注意してください。llvm-symbolizer

4

3 に答える 3