адресное дезинфицирующее средство не будет работать с bash на windows

В настоящее время работает на Ubuntu Bash в Windows, используя llvm, clang, clang-format и clang-modernize. Я хотел бы использовать набор инструментов для дезинфекции, выпущенных Google, в том числе адрес, память и дезинфекцию потоков. Кажется, ни один из параметров fsanitize не работает.

Вот пример кода для ASAN:

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

Вот вызов clang в bash для windows:

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

Результаты

==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)

Я бы с радостью посоветовал, как заставить его работать, или мне не хватает части цепочки инструментов или чего-то еще.

В противном случае я полагаю, что буду использовать двойную загрузку Ubuntu или Debian, потому что в Clang для Windows отсутствуют простые функции, такие как поддержка std: out, хотя в идеале я хотел бы иметь возможность компилировать как цели Windows, так и цели Linux. Я бы хотел избежать двойной загрузки, поскольку Ubuntu не может монтировать пространства хранения Windows, но они, похоже, достаточно хорошо подходят для Ubuntu bash на Windows.

7

Решение

Быстрый взгляд на исходный код — MemoryMappingLayout :: Next — https://llvm.org/svn/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_procmaps_linux.cc — Похоже, проблема в том, что bash в Ubuntu для Windows поддержка файловой системы / proc является неполной.

Код, который терпит неудачу, просматривает / proc / self / maps — что на самом деле — кажется правильным.

Но я обнаружил, что другие вещи (например, сеть) в / proc полностью не работают на bashonwindowsonunix — так что я уверен, что эта часть находится в стадии разработки.

3

Другие решения

Других решений пока нет …