2016-06-29 4 views
6

Derzeit läuft Llvm, Clang, Clang-Format und Clam-Modernisieren auf Ubuntu Bash unter Windows. Ich würde gerne die von Google freigegebenen Desinfektionstools verwenden, einschließlich Adresse, Speicher und Thread-Bereinigung. Keine der FSanitize-Optionen scheint zu funktionieren. HierAdresse Sanitizer wird nicht mit Bash auf Windows

ist das Codebeispiel für ASAN:

#include <stdlib.h> 
int main() { 
    char *x = (char *)malloc(10 * sizeof(char *)); 
    free(x); 
    return x[5];// purposely accessing deallocated memory 
} 

Hier ist das Klirren Anruf in bash auf Fenster:

$clang++-3.5 -fsanitize=address -o1 -fno-omit-frame-pointer -g main.cpp -o main 
$./main 

Ergebnisse

==70==Sanitizer CHECK failed: build/buildd/llvm-toolchain-snapshot-3.5/projects/compiler-rt/lib/sanitizer_common/sanitizer_procmaps_linux.cc:211 ((IsOneOf(*current_, 's', 'p'))) != (0)(0,0) 

I Liebe Vorschläge würden auf wie man es zum Laufen bringt oder ob ich Teile der Werkzeugkette oder etwas vermisse.

Ich schätze, ich werde Ubuntu oder Debian Dual-Boot, weil Clam für Windows fehlt einfache Funktionen wie STD: out-Unterstützung, obwohl ich gerne in der Lage sein würde, sowohl für Windows-Ziele und Linux-Ziele zu kompilieren. Ich möchte jedoch Dual-Boot-Vorgänge vermeiden, da Ubuntu keine Windows-Speicherbereiche bereitstellen kann, aber sie scheinen recht gut unter Ubuntu-Bash unter Windows zu laufen.

Antwort

2

Werfen Sie einen Blick auf den Quellcode - MemoryMappingLayout :: Next - https://llvm.org/svn/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_procmaps_linux.cc - es scheint, das Problem, dass Bash auf Ubuntu auf Windows-Unterstützung für das/Proc-Dateisystem ist unvollständig.

Der Code, der fehlschlägt, schaut auf/proc/self/maps - was eigentlich scheint - ungefähr richtig zu sein.

Aber ich habe andere Sachen (z. B. Vernetzung) in/proc komplett gebrochen auf bashonwindowsonunix gefunden - also bin ich mir ziemlich sicher, dass dieser Teil in Arbeit ist.

Verwandte Themen