Sous Ubuntu 14.10, le programme llvm-symbolizer
est installé sous la forme /usr/bin/llvm-symbolizer-3.5
. Normalement, l'assainisseur d'adresse recherche un fichier binaire nommé llvm-symbolizer
dans PATH
. Cependant, en guise de solution de contournement, il était possible de définir explicitement ASAN_SYMBOLIZER_PATH
. Par conséquent, si vous définissez ASAN_SYMBOLIZER_PATH=/usr/bin/llvm-symbolizer-3.5
dans l'environnement, un programme instrumenté de désinfection d'adresses imprime des erreurs symbolisées. Sur Ubuntu 16.04, le programme llvm-symbolizer
est de nouveau installé avec un suffixe de version, maintenant /usr/bin/llvm-symbolizer-3.8
. Cependant, le réglage ASAN_SYMBOLIZER_PATH
ne semble plus fonctionner. Exécution d'un programme instrumenté ASAN avec ASAN_SYMBOLIZER_PATH=/usr/bin/llvm-symbolizer-3.8
situé dans l'environnement génère l'erreur suivante lorsque ASAN détecte une erreur:Pourquoi ASAN_SYMBOLIZER_PATH ne fonctionne plus avec les versions binaires ornées
==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.
Est-ce que quelqu'un sait pourquoi ce comportement a changé, ou comment rétablir l'ancien comportement? Cela semble déraisonnablement restrictif. Le programme de symbolisation que j'ai pointé vers ASAN est certainement un symboliseur connu, il arrive juste d'avoir une étiquette de version obligatoire d'Ubuntu à la fin.
Notez que l'ajustement PATH
n'aide pas ici, car Ubuntu ne livre pas un binaire llvm-symbolizer
qui est livré sans un ornement de version.
Pour tout le monde qui rencontre cela, il semble que ce soit le résultat de [ce changement dans compiler_rt] [1]. J'ai cliqué sur la revue pour essayer de déterminer si ce changement de comportement était prévu, ou s'il s'agit d'une régression [1]: http://reviews.llvm.org/D8285 – acm
Le moyen le plus simple de résoudre ce problème: ' sudo ln -s /usr/bin/llvm-symbolizer-3.8/usr/bin/llvm-symbolizer' – Eraden
@Eraden Bien sûr, ça fonctionne bien sur ma boîte de dev, mais c'est pour un système de CI où je ne peux pas modifier/usr/bin. – acm