2016-04-07 16 views
6

Od kilku dni pojawia się następujący problem podczas uruchamiania narzędzia do dezynfekcji adresów w Xcode 7.3. Komunikaty o błędach wydrukowany do konsoli Xcode gdy Sanitizer znaleźć problem (który był rzeczywiście stłumiona przez plik):Adres Sanitizer Warning

13392 == == UWAGA: Nie można zapisać do symbolizer na fd 55

== 13392 == UWAGA: nie można zapisać do symbolizer na fd 55

13392 == == UWAGA: nie można zapisać do symbolizer na fd 55

== 13392 == UWAGA: nie można napisz do symbolizatora na fd 55

== 13392 == OSTRZEŻENIE: Nie można użyć i ponownie uruchomić zewnętrznego symbolizatora!

Znalazłem komunikaty o błędach w repozytorium, ale nadal nie mogę wyjaśnić, co się dzieje. Oczywiście wewnętrzna funkcja zapisu nie działa, ale nie mam pojęcia, co to powoduje. Jakieś pomysły?

https://github.com/Microsoft/compiler-rt/blob/master/lib/sanitizer_common/sanitizer_symbolizer_process_libcdep.cc#L100

+0

Btw, to samo działa poprawnie w Xcode 7.2.1. Mając wrażenie, że to błąd w Xcode 7.3 – HelloWorld

Odpowiedz

3

ASAN brakuje swojej drodze. Poniższe czynności zostały wykonane poza Xcode, aby sprawdzić, czy mogę zamanifestować błąd i było to łatwe, jeśli ścieżka była niezdefiniowana. Domyślam się, że XCode nie może znaleźć go tam, gdzie jest szukany lub jak w poniższym przypadku ścieżka ASAN jest niezdefiniowana.

Podczas próby to jeśli dodać i usunąć go z drogi błąd odchodzi ale numery linii zniknie również tj jeśli chcesz ponownie zobaczyć rzeczywisty komunikat o błędzie trzeba użyć

unset ASAN_SYMBOLIZER_PATH 
nie

ASAN_SYMBOLIZER_PATH= 

Tworzenie programu ac następująco ...

int main(void){ 
    int a[3]; 
    a[3] = 4; 
    return 0; 
} 

go skompilować, proszę ignorować ostrzeżenia teraz ...

gcc -std=c11 -Wall -g3 -fno-omit-frame-pointer -fsanitize=address broken_asan_test.c 
./a.out 

Powinieneś zobaczyć coś takiego ...

================================================================= 
==29192==ERROR: AddressSanitizer: stack-buffer-overflow on address 0x7fff5ad1052c at pc 0x000104eefe78 bp 0x7fff5ad104f0 sp 0x7fff5ad104e8 
WRITE of size 4 at 0x7fff5ad1052c thread T0 
    #0 0x104eefe77 in atos[29193]: [fatal] 'pid_for_task' failed: (os/kern) failure (5) (+0x100000e77) 
==29192==WARNING: Can't write to symbolizer at fd 3 
    #1 0x7fff940495ac in atos[29206]: [fatal] 'pid_for_task' failed: (os/kern) failure (5) (+0x35ac) 
    #2 0x0 (<unknown module>) 

Wskazówka ta linia

==29192==WARNING: Can't write to symbolizer at fd 3 

Zmień mieć symbolizer dodany do ścieżki ...

export ASAN_SYMBOLIZER_PATH=/usr/local/Cellar/llvm/3.6.2/bin/llvm-symbolizer 

i błąd zniknie ...

================================================================= 
==29312==ERROR: AddressSanitizer: stack-buffer-overflow on address 0x7fff55ac450c at pc 0x00010a13be78 bp 0x7fff55ac44d0 sp 0x7fff55ac44c8 
WRITE of size 4 at 0x7fff55ac450c thread T0 
    #0 0x10a13be77 in main (/git/ghub/doc/c/./a.out+0x100000e77) 
    #1 0x7fff940495ac in start (/usr/lib/system/libdyld.dylib+0x35ac) 
    #2 0x0 (<unknown module>) 
+0

Dzięki. Jak wspomniałeś, problem jest spowodowany brakującą ścieżką. Wygląda na to, że narzędzia wiersza poleceń dla xcode 7.3 są zepsute. Zgłosiłem to do Apple. Przełączenie z powrotem do Xcode 7.2.1 (poprzez okno dialogowe opcji Xcode) w Xcode 7.3 sprawia, że ​​działa on ponownie. Przebuduj jednak potrzebne. – HelloWorld

Powiązane problemy