jvm-profiling-tools / honest-profiler

A sampling JVM profiler without the safepoint sample bias
https://github.com/RichardWarburton/honest-profiler/wiki
MIT License
1.25k stars 146 forks source link

conflicting declaration of '__pid_t gettid()' with 'C' linkage #267

Open ewirch opened 4 years ago

ewirch commented 4 years ago
/usr/include/bits/unistd_ext.h:34:16: error: conflicting declaration of '__pid_t gettid()' with 'C' linkage
   34 | extern __pid_t gettid (void) __THROW;
      |                ^~~~~~
In file included from honest-profiler/src/main/cpp/thread_map.cpp:1:
honest-profiler/src/main/cpp/thread_map.h:14:5: note: previous declaration with 'C++' linkage
   14 | int gettid();
      |     ^~~~~~
In file included from /usr/include/unistd.h:1170,
                 from honest-profiler/src/main/cpp/thread_map.cpp:4:
/usr/include/bits/unistd_ext.h:34:16: error: declaration of '__pid_t gettid() throw ()' has a different exception specifier
   34 | extern __pid_t gettid (void) __THROW;
      |                ^~~~~~

Compiling succeeds, if getid() declaration in thread_map.h:

int getid();

is replaced by:

extern "C" {
__pid_t gettid() __THROW;
}

System: Arch Linux, kernel 5.4.2.

PaulBGD commented 3 years ago

Same thing happened to me, your fix works great. Anything we'd have to do to get this upstream?