В Ubuntu 14.10 программа llvm-symbolizer
установлена как /usr/bin/llvm-symbolizer-3.5
. Как правило, адрес дезинфицирующего средства хочет найти двоичный файл с именем llvm-symbolizer
в 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
больше не работает. Запуск инструментальной программы ASAN с ASAN_SYMBOLIZER_PATH=/usr/bin/llvm-symbolizer-3.8
, установленным в среде, создает следующую ошибку, когда ASAN обнаруживает ошибку:
==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.
Обратите внимание, что настройка PATH
здесь не помогает, так как Ubuntu не отправляет двоичный файл llvm-symbolizer
, который поставляется без украшения версии.