[llvm-dev] LLVM 3.9.1 build race?

Belal, Awais via llvm-dev
Wed, 25 Jan 2017 10:41:41 -0000

Hi Folks,


I am building LLVM 3.9.1 using the Yocto build system for a cross build. The
compiled bins/libs work totally fine on the target machine however there seems
to be an intermittent race condition during the build which causes a build
failure. On the failed builds I usually see things being linking/compiling twice
e.g.


Linking CXX static library ../libLLVMSupport.a
cd build/NATIVE/lib/Support && /usr/bin/cmake -P
CMakeFiles/LLVMSupport.dir/cmake_clean_target.cmake
cd build/NATIVE/lib/Support && /usr/bin/cmake -E cmake_link_script
CMakeFiles/LLVMSupport.dir/link.txt --verbose=1
/usr/bin/ar qc ../libLLVMSupport.a  CMakeFiles/LLVMSupport.dir/APFloat.cpp.o
CMakeFiles/LLVMSupport.dir/APInt.cpp.o CMakeFiles/LLVMSupport.dir/APSInt.cpp.o
CMakeFiles/LLVMSupport.dir/ARMBuildAttrs.cpp.o
CMakeFiles/LLVMSupport.dir/ARMWinEH.cpp.o
CMakeFiles/LLVMSupport.dir/Allocator.cpp.o
CMakeFiles/LLVMSupport.dir/BlockFrequency.cpp.o
CMakeFiles/LLVMSupport.dir/BranchProbability.cpp.o
CMakeFiles/LLVMSupport.dir/CachePruning.cpp.o
CMakeFiles/LLVMSupport.dir/circular_raw_ostream.cpp.o
CMakeFiles/LLVMSupport.dir/COM.cpp.o
CMakeFiles/LLVMSupport.dir/CommandLine.cpp.o
CMakeFiles/LLVMSupport.dir/Compression.cpp.o
CMakeFiles/LLVMSupport.dir/ConvertUTF.c.o
CMakeFiles/LLVMSupport.dir/ConvertUTFWrapper.cpp.o
CMakeFiles/LLVMSupport.dir/CrashRecoveryContext.cpp.o
CMakeFiles/LLVMSupport.dir/DataExtractor.cpp.o
CMakeFiles/LLVMSupport.dir/DataStream.cpp.o
CMakeFiles/LLVMSupport.dir/Debug.cpp.o
CMakeFiles/LLVMSupport.dir/DeltaAlgorithm.cpp.o
CMakeFiles/LLVMSupport.dir/DAGDeltaAlgorithm.cpp.o
CMakeFiles/LLVMSupport.dir/Dwarf.cpp.o CMakeFiles/LLVMSupport.dir/Error.cpp.o
CMakeFiles/LLVMSupport.dir/ErrorHandling.cpp.o
CMakeFiles/LLVMSupport.dir/FileUtilities.cpp.o
CMakeFiles/LLVMSupport.dir/FileOutputBuffer.cpp.o
CMakeFiles/LLVMSupport.dir/FoldingSet.cpp.o
CMakeFiles/LLVMSupport.dir/FormattedStream.cpp.o
CMakeFiles/LLVMSupport.dir/GraphWriter.cpp.o
CMakeFiles/LLVMSupport.dir/Hashing.cpp.o
CMakeFiles/LLVMSupport.dir/IntEqClasses.cpp.o
CMakeFiles/LLVMSupport.dir/IntervalMap.cpp.o
CMakeFiles/LLVMSupport.dir/IntrusiveRefCntPtr.cpp.o
CMakeFiles/LLVMSupport.dir/JamCRC.cpp.o CMakeFiles/LLVMSupport.dir/LEB128.cpp.o
CMakeFiles/LLVMSupport.dir/LineIterator.cpp.o
CMakeFiles/LLVMSupport.dir/Locale.cpp.o
CMakeFiles/LLVMSupport.dir/LockFileManager.cpp.o
CMakeFiles/LLVMSupport.dir/ManagedStatic.cpp.o
CMakeFiles/LLVMSupport.dir/MathExtras.cpp.o
CMakeFiles/LLVMSupport.dir/MemoryBuffer.cpp.o
CMakeFiles/LLVMSupport.dir/MemoryObject.cpp.o
CMakeFiles/LLVMSupport.dir/MD5.cpp.o CMakeFiles/LLVMSupport.dir/Options.cpp.o
CMakeFiles/LLVMSupport.dir/PluginLoader.cpp.o
CMakeFiles/LLVMSupport.dir/PrettyStackTrace.cpp.o
CMakeFiles/LLVMSupport.dir/RandomNumberGenerator.cpp.o
CMakeFiles/LLVMSupport.dir/Regex.cpp.o
CMakeFiles/LLVMSupport.dir/ScaledNumber.cpp.o
CMakeFiles/LLVMSupport.dir/ScopedPrinter.cpp.o
CMakeFiles/LLVMSupport.dir/SHA1.cpp.o
CMakeFiles/LLVMSupport.dir/SmallPtrSet.cpp.o
CMakeFiles/LLVMSupport.dir/SmallVector.cpp.o
CMakeFiles/LLVMSupport.dir/SourceMgr.cpp.o
CMakeFiles/LLVMSupport.dir/SpecialCaseList.cpp.o
CMakeFiles/LLVMSupport.dir/Statistic.cpp.o
CMakeFiles/LLVMSupport.dir/StreamingMemoryObject.cpp.o
CMakeFiles/LLVMSupport.dir/StringExtras.cpp.o
CMakeFiles/LLVMSupport.dir/StringMap.cpp.o
CMakeFiles/LLVMSupport.dir/StringPool.cpp.o
CMakeFiles/LLVMSupport.dir/StringSaver.cpp.o
CMakeFiles/LLVMSupport.dir/StringRef.cpp.o
CMakeFiles/LLVMSupport.dir/SystemUtils.cpp.o
CMakeFiles/LLVMSupport.dir/TargetParser.cpp.o
CMakeFiles/LLVMSupport.dir/ThreadPool.cpp.o
CMakeFiles/LLVMSupport.dir/Timer.cpp.o
CMakeFiles/LLVMSupport.dir/ToolOutputFile.cpp.o
CMakeFiles/LLVMSupport.dir/Triple.cpp.o CMakeFiles/LLVMSupport.dir/Twine.cpp.o
CMakeFiles/LLVMSupport.dir/Unicode.cpp.o
CMakeFiles/LLVMSupport.dir/YAMLParser.cpp.o
CMakeFiles/LLVMSupport.dir/YAMLTraits.cpp.o
CMakeFiles/LLVMSupport.dir/raw_os_ostream.cpp.o
CMakeFiles/LLVMSupport.dir/raw_ostream.cpp.o
CMakeFiles/LLVMSupport.dir/regcomp.c.o CMakeFiles/LLVMSupport.dir/regerror.c.o
CMakeFiles/LLVMSupport.dir/regexec.c.o CMakeFiles/LLVMSupport.dir/regfree.c.o
CMakeFiles/LLVMSupport.dir/regstrlcpy.c.o
CMakeFiles/LLVMSupport.dir/Atomic.cpp.o
CMakeFiles/LLVMSupport.dir/DynamicLibrary.cpp.o
CMakeFiles/LLVMSupport.dir/Errno.cpp.o CMakeFiles/LLVMSupport.dir/Host.cpp.o
CMakeFiles/LLVMSupport.dir/Memory.cpp.o CMakeFiles/LLVMSupport.dir/Mutex.cpp.o
CMakeFiles/LLVMSupport.dir/Path.cpp.o CMakeFiles/LLVMSupport.dir/Process.cpp.o
CMakeFiles/LLVMSupport.dir/Program.cpp.o
CMakeFiles/LLVMSupport.dir/RWMutex.cpp.o
CMakeFiles/LLVMSupport.dir/SearchForAddressOfSpecialSymbol.cpp.o
CMakeFiles/LLVMSupport.dir/Signals.cpp.o
CMakeFiles/LLVMSupport.dir/TargetRegistry.cpp.o
CMakeFiles/LLVMSupport.dir/ThreadLocal.cpp.o
CMakeFiles/LLVMSupport.dir/Threading.cpp.o
CMakeFiles/LLVMSupport.dir/TimeValue.cpp.o
CMakeFiles/LLVMSupport.dir/Valgrind.cpp.o
CMakeFiles/LLVMSupport.dir/Watchdog.cpp.o
Linking CXX static library ../libLLVMSupport.a
cd build/NATIVE/lib/Support && /usr/bin/cmake -P
CMakeFiles/LLVMSupport.dir/cmake_clean_target.cmake
cd build/NATIVE/lib/Support && /usr/bin/cmake -E cmake_link_script
CMakeFiles/LLVMSupport.dir/link.txt --verbose=1
/usr/bin/ar qc ../libLLVMSupport.a  CMakeFiles/LLVMSupport.dir/APFloat.cpp.o
CMakeFiles/LLVMSupport.dir/APInt.cpp.o CMakeFiles/LLVMSupport.dir/APSInt.cpp.o
CMakeFiles/LLVMSupport.dir/ARMBuildAttrs.cpp.o
CMakeFiles/LLVMSupport.dir/ARMWinEH.cpp.o
CMakeFiles/LLVMSupport.dir/Allocator.cpp.o
CMakeFiles/LLVMSupport.dir/BlockFrequency.cpp.o
CMakeFiles/LLVMSupport.dir/BranchProbability.cpp.o
CMakeFiles/LLVMSupport.dir/CachePruning.cpp.o
CMakeFiles/LLVMSupport.dir/circular_raw_ostream.cpp.o
CMakeFiles/LLVMSupport.dir/COM.cpp.o
CMakeFiles/LLVMSupport.dir/CommandLine.cpp.o
CMakeFiles/LLVMSupport.dir/Compression.cpp.o
CMakeFiles/LLVMSupport.dir/ConvertUTF.c.o
CMakeFiles/LLVMSupport.dir/ConvertUTFWrapper.cpp.o
CMakeFiles/LLVMSupport.dir/CrashRecoveryContext.cpp.o
CMakeFiles/LLVMSupport.dir/DataExtractor.cpp.o
CMakeFiles/LLVMSupport.dir/DataStream.cpp.o
CMakeFiles/LLVMSupport.dir/Debug.cpp.o
CMakeFiles/LLVMSupport.dir/DeltaAlgorithm.cpp.o
CMakeFiles/LLVMSupport.dir/DAGDeltaAlgorithm.cpp.o
CMakeFiles/LLVMSupport.dir/Dwarf.cpp.o CMakeFiles/LLVMSupport.dir/Error.cpp.o
CMakeFiles/LLVMSupport.dir/ErrorHandling.cpp.o
CMakeFiles/LLVMSupport.dir/FileUtilities.cpp.o
CMakeFiles/LLVMSupport.dir/FileOutputBuffer.cpp.o
CMakeFiles/LLVMSupport.dir/FoldingSet.cpp.o
CMakeFiles/LLVMSupport.dir/FormattedStream.cpp.o
CMakeFiles/LLVMSupport.dir/GraphWriter.cpp.o
CMakeFiles/LLVMSupport.dir/Hashing.cpp.o
CMakeFiles/LLVMSupport.dir/IntEqClasses.cpp.o
CMakeFiles/LLVMSupport.dir/IntervalMap.cpp.o
CMakeFiles/LLVMSupport.dir/IntrusiveRefCntPtr.cpp.o
CMakeFiles/LLVMSupport.dir/JamCRC.cpp.o CMakeFiles/LLVMSupport.dir/LEB128.cpp.o
CMakeFiles/LLVMSupport.dir/LineIterator.cpp.o
CMakeFiles/LLVMSupport.dir/Locale.cpp.o
CMakeFiles/LLVMSupport.dir/LockFileManager.cpp.o
CMakeFiles/LLVMSupport.dir/ManagedStatic.cpp.o
CMakeFiles/LLVMSupport.dir/MathExtras.cpp.o
CMakeFiles/LLVMSupport.dir/MemoryBuffer.cpp.o
CMakeFiles/LLVMSupport.dir/MemoryObject.cpp.o
CMakeFiles/LLVMSupport.dir/MD5.cpp.o CMakeFiles/LLVMSupport.dir/Options.cpp.o
CMakeFiles/LLVMSupport.dir/PluginLoader.cpp.o
CMakeFiles/LLVMSupport.dir/PrettyStackTrace.cpp.o
CMakeFiles/LLVMSupport.dir/RandomNumberGenerator.cpp.o
CMakeFiles/LLVMSupport.dir/Regex.cpp.o
CMakeFiles/LLVMSupport.dir/ScaledNumber.cpp.o
CMakeFiles/LLVMSupport.dir/ScopedPrinter.cpp.o
CMakeFiles/LLVMSupport.dir/SHA1.cpp.o
CMakeFiles/LLVMSupport.dir/SmallPtrSet.cpp.o
CMakeFiles/LLVMSupport.dir/SmallVector.cpp.o
CMakeFiles/LLVMSupport.dir/SourceMgr.cpp.o
CMakeFiles/LLVMSupport.dir/SpecialCaseList.cpp.o
CMakeFiles/LLVMSupport.dir/Statistic.cpp.o
CMakeFiles/LLVMSupport.dir/StreamingMemoryObject.cpp.o
CMakeFiles/LLVMSupport.dir/StringExtras.cpp.o
CMakeFiles/LLVMSupport.dir/StringMap.cpp.o
CMakeFiles/LLVMSupport.dir/StringPool.cpp.o
CMakeFiles/LLVMSupport.dir/StringSaver.cpp.o
CMakeFiles/LLVMSupport.dir/StringRef.cpp.o
CMakeFiles/LLVMSupport.dir/SystemUtils.cpp.o
CMakeFiles/LLVMSupport.dir/TargetParser.cpp.o
CMakeFiles/LLVMSupport.dir/ThreadPool.cpp.o
CMakeFiles/LLVMSupport.dir/Timer.cpp.o
CMakeFiles/LLVMSupport.dir/ToolOutputFile.cpp.o
CMakeFiles/LLVMSupport.dir/Triple.cpp.o CMakeFiles/LLVMSupport.dir/Twine.cpp.o
CMakeFiles/LLVMSupport.dir/Unicode.cpp.o
CMakeFiles/LLVMSupport.dir/YAMLParser.cpp.o
CMakeFiles/LLVMSupport.dir/YAMLTraits.cpp.o
CMakeFiles/LLVMSupport.dir/raw_os_ostream.cpp.o
CMakeFiles/LLVMSupport.dir/raw_ostream.cpp.o
CMakeFiles/LLVMSupport.dir/regcomp.c.o CMakeFiles/LLVMSupport.dir/regerror.c.o
CMakeFiles/LLVMSupport.dir/regexec.c.o CMakeFiles/LLVMSupport.dir/regfree.c.o
CMakeFiles/LLVMSupport.dir/regstrlcpy.c.o
CMakeFiles/LLVMSupport.dir/Atomic.cpp.o
CMakeFiles/LLVMSupport.dir/DynamicLibrary.cpp.o
CMakeFiles/LLVMSupport.dir/Errno.cpp.o CMakeFiles/LLVMSupport.dir/Host.cpp.o
CMakeFiles/LLVMSupport.dir/Memory.cpp.o CMakeFiles/LLVMSupport.dir/Mutex.cpp.o
CMakeFiles/LLVMSupport.dir/Path.cpp.o CMakeFiles/LLVMSupport.dir/Process.cpp.o
CMakeFiles/LLVMSupport.dir/Program.cpp.o
CMakeFiles/LLVMSupport.dir/RWMutex.cpp.o
CMakeFiles/LLVMSupport.dir/SearchForAddressOfSpecialSymbol.cpp.o
CMakeFiles/LLVMSupport.dir/Signals.cpp.o
CMakeFiles/LLVMSupport.dir/TargetRegistry.cpp.o
CMakeFiles/LLVMSupport.dir/ThreadLocal.cpp.o
CMakeFiles/LLVMSupport.dir/Threading.cpp.o
CMakeFiles/LLVMSupport.dir/TimeValue.cpp.o
CMakeFiles/LLVMSupport.dir/Valgrind.cpp.o
CMakeFiles/LLVMSupport.dir/Watchdog.cpp.o
/usr/bin/ranlib ../libLLVMSupport.a
/usr/bin/ranlib ../libLLVMSupport.a


Sorry for the clutter here... :(

and from the above mentioned example the build failed with


../../lib/libLLVMSupport.a(Process.cpp.o): In function
`llvm::sys::Process::GetRandomNumber()':
Process.cpp:(.text._ZN4llvm3sys7Process15GetRandomNumberEv+0x70): undefined
reference to `llvm::sys::TimeValue::now()'
collect2: error: ld returned 1 exit status


I also see exactly 4 instances of "warning: jobserver unavailable: using
-j1.  Add `+' to parent make rule." and this was reported at
https://llvm.org/bugs/show_bug.cgi?format=multiple&id=23328 quite some time
ago. Has there been any movement on this? Can the mentioned warning cause such a
trouble? I doubt that because the warning appears in successful builds as well
but I'd love to hear expert opinion on this.


NATIVE builds are done for the host which is then utilized for generating the
target binaries, correct? If that is so, what can cause multiple builds for the
NATIVE system?


We're building with CMake with the "Unix Makefiles" generator
prior to this we were building 3.7.1 using autotools and never saw such an
issue. GCC version is 5.4.0 on both instances with GNU Make at 4.1. Any
pointers/help would be highly appreciated.


BR,
Awais
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://lists.llvm.org/pipermail/llvm-dev/attachments/20170125/11aeb153/attachment.html>