В 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, который поставляется без украшения версии.