[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