3

gcc の -fsanitize=thread の使用をテストしようとしていますが、予期しないメモリ マッピングについて不平を言っています。おそらくカーネルに何らかの変更があった可能性があり、それがその理由です。それを機能させるためにできることはありますか?

これが私がしていることです...

mfrw@kp ...fpp/asgn/as2 % 
mfrw@kp ...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;
}
mfrw@kp ...fpp/asgn/as2 % g++ tiny.cpp -fsanitize=thread -pie -fPIC -g -O1 -o tinyrace -pthread
mfrw@kp ...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
mfrw@kp ...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.

mfrw@kp ...fpp/asgn/as2 % ./tinyrace 
FATAL: ThreadSanitizer: unexpected memory mapping 0x55e38776b000-0x55e38776c000
mfrw@kp ...fpp/asgn/as2 % 
4

2 に答える 2