[Openmp-dev] LIBOMP: TSAN functionality requested but not available

Joachim Protze via Openmp-dev openmp-dev at lists.llvm.org
Thu May 16 08:00:15 PDT 2019


Hi Jan,

sorry, I missed to add the information that with the archer_80 branch, 
you should NOT set LIBOMP_TSAN_SUPPORT=on.
This branch comes with a tool, that is loaded at runtime and should also 
provide better results, than the annotations activated by 
LIBOMP_TSAN_SUPPORT=on.

I also suggest to

export TSAN_OPTIONS="ignore_noninstrumented_modules=1"

to avoid some false positive reports in the OpenMP runtime.

- Joachim



On 5/16/19 4:55 PM, Jan Studený wrote:
> Hi, thanks for quick reply. I have tried lifting the restriction 
> (setting LIBOMP_HAVE_TSAN_SUPPORT to TRUE) in both branches but 
> unfortunately I got 1 or 2 errors when compiling from`llvm-project` or 
> from `PRUNERS/openmp`. For the completeness they are at the bottom of 
> the message. My Clang version is 8.0.0. Is there some plan to support 
> the TSAN on macOS soon? Otherwise I will try to manually compile archer 
> and hope it will work (already tried to install through spack but it 
> failed - was hanging over an hour on installation of perl).
> 
> Thanks for help.
> 
> Jan
> 
> **pruners/openmp**
> CMake Warning (dev):
>    Policy CMP0042 is not set: MACOSX_RPATH is enabled by default.  Run 
> "cmake
>    --help-policy CMP0042" for policy details.  Use the cmake_policy 
> command to
>    set the policy and suppress this warning.
> 
>    MACOSX_RPATH is not specified for the following targets:
> 
>     omptarget
> 
> [ 26%] Building CXX object 
> runtime/src/CMakeFiles/omp.dir/kmp_environment.cpp.o
> /Users/janstudeny/metagenome_lossless_dbg/metagraph/experiments/lossless_dbg/playground/openmp/libomptarget/src/omptarget.cpp:75:36: 
> error: field of type 'HostDataToTargetListTy::iterator'
>        (aka '__list_iterator') has private constructor
>    LookupResult() : Flags({0,0,0}), Entry(0) {}
>                                     ^
> /usr/local/opt/llvm/bin/../include/c++/v1/list:303:14: note: implicitly 
> declared private here
>      explicit __list_iterator(__link_pointer __p) _NOEXCEPT : __ptr_(__p) {}
> 
> [ 92%] Building CXX object 
> runtime/src/CMakeFiles/omp.dir/tsan_annotations.cpp.o
> In file included from 
> /Users/janstudeny/metagenome_lossless_dbg/metagraph/experiments/lossless_dbg/playground/openmp/runtime/src/kmp_ftn_cdecl.cpp:33:
> /Users/janstudeny/metagenome_lossless_dbg/metagraph/experiments/lossless_dbg/playground/openmp/runtime/src/kmp_ftn_entry.h:939:9: 
> error: definition of builtin function 'omp_is_initial_device'
> xexpand(FTN_IS_INITIAL_DEVICE)( void )
>          ^
> /Users/janstudeny/metagenome_lossless_dbg/metagraph/experiments/lossless_dbg/playground/openmp/runtime/src/kmp_ftn_os.h:110:50: 
> note: expanded from macro 'FTN_IS_INITIAL_DEVICE'
>      #define FTN_IS_INITIAL_DEVICE                omp_is_initial_device
> 
> 
> **llvm-project**
> ```
> [ 50%] Building CXX object 
> runtime/src/CMakeFiles/omp.dir/kmp_threadprivate.cpp.o
> /tmp/llvm-project/openmp/runtime/src/kmp_runtime.cpp:8031:52: warning: 
> 'syscall' is deprecated: first deprecated in macOS 10.12 - syscall(2) is 
> unsupported; please switch to a supported interface. For
>        SYS_kdebug_trace use kdebug_signpost(). [-Wdeprecated-declarations]
>      rc = __kmp_str_buf_print(field_buffer, format, __kmp_gettid());
>                                                     ^
> /tmp/llvm-project/openmp/runtime/src/kmp_wrapper_getpid.h:25:24: note: 
> expanded from macro '__kmp_gettid'
> #define __kmp_gettid() syscall(SYS_thread_selfid)
>                         ^
> /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include/unistd.h:745:6: 
> note: 'syscall' has been explicitly marked deprecated here
> int      syscall(int, ...);
> 
> 
> [ 88%] Building CXX object runtime/src/CMakeFiles/omp.dir/kmp_version.cpp.o
> In file included from 
> /tmp/llvm-project/openmp/runtime/src/kmp_ftn_cdecl.cpp:31:
> /tmp/llvm-project/openmp/runtime/src/kmp_ftn_entry.h:971:33: error: 
> definition of builtin function 'omp_is_initial_device'
> int FTN_STDCALL KMP_EXPAND_NAME(FTN_IS_INITIAL_DEVICE)(void) {
>                                  ^
> /tmp/llvm-project/openmp/runtime/src/kmp_ftn_os.h:105:31: note: expanded 
> from macro 'FTN_IS_INITIAL_DEVICE'
> #define FTN_IS_INITIAL_DEVICE omp_is_initial_device
> ```
> On 16 May 2019, 15:38 +0200, Joachim Protze <protze.joachim at gmail.com>, 
> wrote:
>> Hello Jan,
>>
>> the logic to detect whether the TSan annotations might be supported on
>> your platform is quite simple in the OpenMP runtime. We only tested this
>> on x86_64 Linux, so this is the only platform that is flagged supported in
>>
>> runtime/cmake/config-ix.cmake:280
>>
>> You might just remove/modify that lines. But I remember that there are
>> some issues with the weak implementation workflow in the TSan annotations.
>>
>>
>> I would suggest you to try this branch instead:
>>
>> https://github.com/PRUNERS/openmp/tree/archer_80
>>
>> I will push this to upstream soon, but did not find the time to update
>> my patch in phabricator yet.
>>
>> Best
>> Joachim
>>
>> On 5/16/19 3:24 PM, Jan Studený via Openmp-dev wrote:
>>> Hello everyone,
>>> As the default clang is outputting false positives when running openmp
>>> program I wanted to compile openmp with TSAN (thread sanitizer) support.
>>> Unfortunately when I tried to compile openmp I got an error that says:
>>> "TSAN functionality requested but not available". What does it mean not
>>> available? Should I install something extra (what if it is the case)?
>>> (maybe helps: currently when compiling`clang -fsanitize=thread -g
>>> -O1 tiny_race.c` I get no error). Running on macOS 10.14.4 (18E226).
>>> Here is the output of `cmake -DCMAKE_C_COMPILER=clang
>>> -DCMAKE_CXX_COMPILER=clang++ -DLIBOMP_TSAN_SUPPORT=1 ../openmp` (the
>>> openmp repository is cloned from https://github.com/llvm/llvm-project):
>>>
>>> Thank you for any hints how to fix this error.
>>> Regards,
>>> Jan
>>>
>>> -- The C compiler identification is Clang 8.0.0
>>>
>>> -- The CXX compiler identification is Clang 8.0.0
>>>
>>> -- Check for working C compiler: /usr/local/opt/llvm/bin/clang
>>>
>>> -- Check for working C compiler: /usr/local/opt/llvm/bin/clang -- works
>>>
>>> -- Detecting C compiler ABI info
>>>
>>> -- Detecting C compiler ABI info - done
>>>
>>> -- Detecting C compile features
>>>
>>> -- Detecting C compile features - done
>>>
>>> -- Check for working CXX compiler: /usr/local/opt/llvm/bin/clang++
>>>
>>> -- Check for working CXX compiler: /usr/local/opt/llvm/bin/clang++ -- 
>>> works
>>>
>>> -- Detecting CXX compiler ABI info
>>>
>>> -- Detecting CXX compiler ABI info - done
>>>
>>> -- Detecting CXX compile features
>>>
>>> -- Detecting CXX compile features - done
>>>
>>> -- Performing Test OPENMP_HAVE_WERROR_FLAG
>>>
>>> -- Performing Test OPENMP_HAVE_WERROR_FLAG - Success
>>>
>>> -- Performing Test OPENMP_HAVE_STD_GNUPP11_FLAG
>>>
>>> -- Performing Test OPENMP_HAVE_STD_GNUPP11_FLAG - Success
>>>
>>> -- Performing Test OPENMP_HAVE_STD_CPP11_FLAG
>>>
>>> -- Performing Test OPENMP_HAVE_STD_CPP11_FLAG - Success
>>>
>>> -- Found PythonInterp: /usr/bin/python (found version "2.7.10")
>>>
>>> -- Cannot find llvm-lit.
>>>
>>> -- Please put llvm-lit in your PATH, set OPENMP_LLVM_LIT_EXECUTABLE to
>>> its full path, or point OPENMP_LLVM_TOOLS_DIR to its directory.
>>>
>>> CMake Warning at cmake/OpenMPTesting.cmake:22 (message):
>>>
>>>   The check targets will not be available!
>>>
>>> Call Stack (most recent call first):
>>>
>>>   cmake/OpenMPTesting.cmake:40 (find_standalone_test_dependencies)
>>>
>>>   CMakeLists.txt:49 (include)
>>>
>>>
>>>
>>> -- Performing Test LIBOMP_HAVE_FNO_EXCEPTIONS_FLAG
>>>
>>> -- Performing Test LIBOMP_HAVE_FNO_EXCEPTIONS_FLAG - Success
>>>
>>> -- Performing Test LIBOMP_HAVE_FNO_RTTI_FLAG
>>>
>>> -- Performing Test LIBOMP_HAVE_FNO_RTTI_FLAG - Success
>>>
>>> -- Performing Test LIBOMP_HAVE_X_CPP_FLAG
>>>
>>> -- Performing Test LIBOMP_HAVE_X_CPP_FLAG - Success
>>>
>>> -- Performing Test LIBOMP_HAVE_WCAST_QUAL_FLAG
>>>
>>> -- Performing Test LIBOMP_HAVE_WCAST_QUAL_FLAG - Success
>>>
>>> -- Performing Test LIBOMP_HAVE_WNO_UNUSED_FUNCTION_FLAG
>>>
>>> -- Performing Test LIBOMP_HAVE_WNO_UNUSED_FUNCTION_FLAG - Success
>>>
>>> -- Performing Test LIBOMP_HAVE_WNO_UNUSED_LOCAL_TYPEDEF_FLAG
>>>
>>> -- Performing Test LIBOMP_HAVE_WNO_UNUSED_LOCAL_TYPEDEF_FLAG - Success
>>>
>>> -- Performing Test LIBOMP_HAVE_WNO_UNUSED_VALUE_FLAG
>>>
>>> -- Performing Test LIBOMP_HAVE_WNO_UNUSED_VALUE_FLAG - Success
>>>
>>> -- Performing Test LIBOMP_HAVE_WNO_UNUSED_VARIABLE_FLAG
>>>
>>> -- Performing Test LIBOMP_HAVE_WNO_UNUSED_VARIABLE_FLAG - Success
>>>
>>> -- Performing Test LIBOMP_HAVE_WNO_SWITCH_FLAG
>>>
>>> -- Performing Test LIBOMP_HAVE_WNO_SWITCH_FLAG - Success
>>>
>>> -- Performing Test LIBOMP_HAVE_WNO_COVERED_SWITCH_DEFAULT_FLAG
>>>
>>> -- Performing Test LIBOMP_HAVE_WNO_COVERED_SWITCH_DEFAULT_FLAG - Success
>>>
>>> -- Performing Test LIBOMP_HAVE_WNO_DEPRECATED_REGISTER_FLAG
>>>
>>> -- Performing Test LIBOMP_HAVE_WNO_DEPRECATED_REGISTER_FLAG - Success
>>>
>>> -- Performing Test LIBOMP_HAVE_WNO_SIGN_COMPARE_FLAG
>>>
>>> -- Performing Test LIBOMP_HAVE_WNO_SIGN_COMPARE_FLAG - Success
>>>
>>> -- Performing Test LIBOMP_HAVE_WNO_GNU_ANONYMOUS_STRUCT_FLAG
>>>
>>> -- Performing Test LIBOMP_HAVE_WNO_GNU_ANONYMOUS_STRUCT_FLAG - Success
>>>
>>> -- Performing Test LIBOMP_HAVE_WNO_UNKNOWN_PRAGMAS_FLAG
>>>
>>> -- Performing Test LIBOMP_HAVE_WNO_UNKNOWN_PRAGMAS_FLAG - Success
>>>
>>> -- Performing Test LIBOMP_HAVE_WNO_MISSING_FIELD_INITIALIZERS_FLAG
>>>
>>> -- Performing Test LIBOMP_HAVE_WNO_MISSING_FIELD_INITIALIZERS_FLAG - 
>>> Success
>>>
>>> -- Performing Test LIBOMP_HAVE_WNO_MISSING_BRACES_FLAG
>>>
>>> -- Performing Test LIBOMP_HAVE_WNO_MISSING_BRACES_FLAG - Success
>>>
>>> -- Performing Test LIBOMP_HAVE_WNO_COMMENT_FLAG
>>>
>>> -- Performing Test LIBOMP_HAVE_WNO_COMMENT_FLAG - Success
>>>
>>> -- Performing Test LIBOMP_HAVE_WNO_SELF_ASSIGN_FLAG
>>>
>>> -- Performing Test LIBOMP_HAVE_WNO_SELF_ASSIGN_FLAG - Success
>>>
>>> -- Performing Test LIBOMP_HAVE_WNO_VLA_EXTENSION_FLAG
>>>
>>> -- Performing Test LIBOMP_HAVE_WNO_VLA_EXTENSION_FLAG - Success
>>>
>>> -- Performing Test LIBOMP_HAVE_WNO_FORMAT_PEDANTIC_FLAG
>>>
>>> -- Performing Test LIBOMP_HAVE_WNO_FORMAT_PEDANTIC_FLAG - Success
>>>
>>> -- Performing Test LIBOMP_HAVE_WSTRINGOP_OVERFLOW_FLAG
>>>
>>> -- Performing Test LIBOMP_HAVE_WSTRINGOP_OVERFLOW_FLAG - Failed
>>>
>>> -- Performing Test LIBOMP_HAVE_MSSE2_FLAG
>>>
>>> -- Performing Test LIBOMP_HAVE_MSSE2_FLAG - Success
>>>
>>> -- Performing Test LIBOMP_HAVE_FTLS_MODEL_FLAG
>>>
>>> -- Performing Test LIBOMP_HAVE_FTLS_MODEL_FLAG - Success
>>>
>>> -- Performing Test LIBOMP_HAVE_MMIC_FLAG
>>>
>>> -- Performing Test LIBOMP_HAVE_MMIC_FLAG - Failed
>>>
>>> -- Performing Test LIBOMP_HAVE_M32_FLAG
>>>
>>> -- Performing Test LIBOMP_HAVE_M32_FLAG - Failed
>>>
>>> -- Looking for pthread.h
>>>
>>> -- Looking for pthread.h - found
>>>
>>> -- Looking for pthread_create
>>>
>>> -- Looking for pthread_create - found
>>>
>>> -- Found Threads: TRUE
>>>
>>> -- Found Perl: /usr/bin/perl (found version "5.18.2")
>>>
>>> -- Performing Test LIBOMP_HAVE_VERSION_SYMBOLS
>>>
>>> -- Performing Test LIBOMP_HAVE_VERSION_SYMBOLS - Failed
>>>
>>> -- Performing Test LIBOMP_HAVE___BUILTIN_FRAME_ADDRESS
>>>
>>> -- Performing Test LIBOMP_HAVE___BUILTIN_FRAME_ADDRESS - Success
>>>
>>> -- Performing Test LIBOMP_HAVE_WEAK_ATTRIBUTE
>>>
>>> -- Performing Test LIBOMP_HAVE_WEAK_ATTRIBUTE - Success
>>>
>>> -- Looking for include files windows.h, psapi.h
>>>
>>> -- Looking for include files windows.h, psapi.h - not found
>>>
>>> -- Looking for EnumProcessModules in psapi
>>>
>>> -- Looking for EnumProcessModules in psapi - not found
>>>
>>> CMake Error at runtime/cmake/LibompUtils.cmake:26 (message):
>>>
>>>   LIBOMP: TSAN functionality requested but not available
>>>
>>> Call Stack (most recent call first):
>>>
>>>   runtime/CMakeLists.txt:325 (libomp_error_say)
>>>
>>>
>>>
>>> -- Configuring incomplete, errors occurred!
>>>
>>> See also "/tmp/llvm-project/build/CMakeFiles/CMakeOutput.log".
>>>
>>> See also "/tmp/llvm-project/build/CMakeFiles/CMakeError.log".
>>>
>>>
>>> _______________________________________________
>>> Openmp-dev mailing list
>>> Openmp-dev at lists.llvm.org
>>> https://lists.llvm.org/cgi-bin/mailman/listinfo/openmp-dev
>>>
>>



More information about the Openmp-dev mailing list