Auf Ubuntu 14.10 wird das llvm-symbolizer
Programm als /usr/bin/llvm-symbolizer-3.5
installiert. Normalerweise möchte der Adressdesinfektor eine Binärdatei mit der Bezeichnung llvm-symbolizer
in PATH
finden. Als Workaround konnte jedoch explizit ASAN_SYMBOLIZER_PATH
gesetzt werden. Die Einstellung ASAN_SYMBOLIZER_PATH=/usr/bin/llvm-symbolizer-3.5
in der Umgebung würde also eine Adress-Sanitizer-Instrumentierung veranlassen, symbolisierte Fehler zu drucken.Warum funktioniert ASAN_SYMBOLIZER_PATH nicht mehr mit versionsverschönerten Binärdateien?
Auf Ubuntu 16.04 wird das Programm llvm-symbolizer
erneut mit einem Versions-Suffix, jetzt als /usr/bin/llvm-symbolizer-3.8
, installiert. Die Einstellung ASAN_SYMBOLIZER_PATH
scheint jedoch nicht mehr zu funktionieren. Ausführen einen ASAN instrumentierte Programm mit ASAN_SYMBOLIZER_PATH=/usr/bin/llvm-symbolizer-3.8
in der Umgebung gesetzt generiert die folgende Fehlermeldung, wenn ASAN einen Fehler erkennt:
==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.
Weiß jemand, warum dieses Verhalten geändert, oder wie das alte Verhalten wieder herzustellen? Dies scheint unangemessen restriktiv zu sein. Das Symbolizer-Programm, auf das ich ASAN hingewiesen habe, ist definitiv ein bekannter Symboler, es hat einfach am Ende ein Ubuntu-mandatiertes Versions-Tag.
Beachten Sie, dass die Anpassung PATH
hier nicht hilft, da Ubuntu keine llvm-symbolizer
Binärdatei liefert, die ohne eine Version Schmuck kommt.
Für jeden anderen, der dies bemerkt, scheint es, dass dies das Ergebnis von [dieser Änderung in Compiler_rt] [1] war. Ich habe die Überprüfung gepingt, um zu versuchen, festzustellen, ob diese Änderung im Verhalten beabsichtigt war, oder wenn das eine Regression ist [1]: http://reviews.llvm.org/D8285 – acm
Einfachster Weg, um dies zu beheben: ' sudo ln -s /usr/bin/llvm-symbolizer-3.8/usr/bin/llvm-symbolizer' – Eraden
@Eraden Sicher, das funktioniert gut auf meiner Dev-Box, aber das ist für ein CI-System, wo ich nicht ändern kann/usr/bin. – acm