Pourquoi ASAN SYMBOLIZER PATH ne fonctionne-t-il plus avec la version binaires ornés
sur Ubuntu 14.10, le llvm-symbolizer
programme est installé comme /usr/bin/llvm-symbolizer-3.5
. Normalement, l'adresse de désinfectant veut trouver un binaire nommé llvm-symbolizer
PATH
. Cependant, comme solution de contournement, il a été possible de définir explicitement ASAN_SYMBOLIZER_PATH
. Ainsi, la configuration de ASAN_SYMBOLIZER_PATH=/usr/bin/llvm-symbolizer-3.5
dans l'environnement laisserait un programme de nettoyage d'adresse instrumenté imprimer des erreurs symbolisées.
sur Ubuntu 16.04, le llvm-symbolizer
le programme est de nouveau installé avec un suffixe de version, maintenant comme /usr/bin/llvm-symbolizer-3.8
. Cependant, le ASAN_SYMBOLIZER_PATH
le réglage n'est plus semble fonctionner. Exécution d'un programme instrumenté ASAN avec ASAN_SYMBOLIZER_PATH=/usr/bin/llvm-symbolizer-3.8
dans l'environnement génère l'erreur suivante lors de l'ASAN détecte une erreur:
==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.
personne Ne sait pourquoi ce comportement a changé, ou comment restaurer l'ancien comportement? Cela semble excessivement restrictif. Le programme symbolizer que J'ai indiqué à ASAN est certainement un symbolizer connu, il se trouve juste d'avoir une étiquette de version mandatée par Ubuntu à la fin.
notez que l'ajustement PATH
ne pas aide ici, puisque Ubuntu ne Livre pas un llvm-symbolizer
binaire qui vient sans parure de version.
2 réponses
Il s'avère, que sur Ubuntu emballage de LLVM, on peut obtenir les fioritures llvm-symbolizer
binaire à partir du chemin d'accès /usr/lib/llvm-3.x/bin
, donc PATH=/usr/lib/llvm-3.x/bin:$PATH [COMMAND]
le truc. Je pense toujours que ce changement est une régression dans compiler_rt.
les suivants
sudo ln -s /usr/bin/llvm-symbolizer-3.8 /usr/bin/llvm-symbolizer
fonctionne aussi pour llvm-symbolizer-4.0
(copié du commentaire de @Eraden)