gcc에 대해 -fsanitize = thread의 사용법을 테스트하고 예기치 않은 메모리 매핑이 발생했는지 확인하려고합니다. 커널에 약간의 변경이 있었을 수 있습니다. . 작동하도록 할 수있는 일이 있습니까?예상치 못한 메모리 맵에 대해 불평하는 스레드 살균제
이것은 내가 뭐하는 거지입니다 ...
그것은 당신의 컴파일 옵션과 함께 할 것입니다[email protected] ...fpp/asgn/as2 %
[email protected] ...fpp/asgn/as2 % cat tiny.cpp
#include <pthread.h>
int global;
void *thread(void *x) {
global = 42;
return x;
}
int main() {
pthread_t t;
pthread_create(&t, NULL, thread, NULL);
global = 43;
pthread_join(t, NULL);
return global;
}
[email protected] ...fpp/asgn/as2 % g++ tiny.cpp -fsanitize=thread -pie -fPIC -g -O1 -o tinyrace -pthread
[email protected] ...fpp/asgn/as2 % uname -a
Linux kp 4.4.33-1-MANJARO #1 SMP PREEMPT Fri Nov 18 18:06:44 UTC 2016 x86_64 GNU/Linux
[email protected] ...fpp/asgn/as2 % gcc --version
gcc (GCC) 6.2.1 20160830
Copyright (C) 2016 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
[email protected] ...fpp/asgn/as2 % ./tinyrace
FATAL: ThreadSanitizer: unexpected memory mapping 0x55e38776b000-0x55e38776c000
[email protected] ...fpp/asgn/as2 %
현재 동일한 쓰레기가 있습니다. 솔루션을 찾고 있습니다. –
나를 위해, 그것은 오래된 커널과 함께 일했다 ... 나는 커널 2.6.32와 함께 고대 서버를 가졌다. 아마 커널과 함께 뭔가를 가지고있을 것이다. – mfrw
같은 이슈 : 우분투 17.04; 커널 버전 4.10.0-33- 일반; gcc 6.3.0. '-pie -fPIC'을 사용하지 않아도 문제가 해결되지 않습니다. 대답을 기다리고 .. – kaiwan