gccの-fsanitize = threadの使用をテストしようとしていて、予期しないメモリマッピングの不平を言っています。その理由は、カーネルに若干の変更があり、 。それを機能させるために私ができることはありますか? -pie -fPIC:予期せぬメモリマップを不快にするスレッドサニタイザ
これは、それはあなたのコンパイルオプションを指定して行うことです...私がやっている何
[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
同じ問題:Ubuntu 17.04;カーネルバージョン4.10.0-33-ジェネリック; gcc 6.3.0。 '-pie -fPIC'を使用しても問題は解決しません。答えを待っている.. – kaiwan