CMake autogen hangs since version 3.20
Hi!
I have a strange problem here. Since updating from 3.19 to 3.20.1 our builds started hanging at seemingly random steps. After some investigation i think it has something to do with the AUTOMOC. In case when my build hang, i have a cmake-process in my process list, which is in a deadlock state. This process was called with the following commandline args:
C:\Binary\Msys2\mingw64\bin\cmake.exe -E cmake_autogen C:/gcc_release_build/Module/CMakeFiles/Module_autogen.dir/AutogenInfo.json RelWithDebInfo
If i kill this process manually, the build process ends with an error. I can retrigger the build and it will hang at another moc/autogen step or complete. Iteratively doing so will allow me to complete the build.
This happens with different generators. I could reproduce the problem with MSYS Makefiles
and Visual Studio 15 2017
.
Using msbuild, the following errors show up during the build:
C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\IDE\VC\VCTargets\Microsoft.CppCommon.targets(128,5): error MSB3073: Der Befehl "setlocal [C:\Gitlab-Runner\builds\ad375a1d\0\ApiTestApp.vcxproj]
C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\IDE\VC\VCTargets\Microsoft.CppCommon.targets(128,5): error MSB3073: cd C:\Gitlab-Runner\builds\ad375a1d\0\ApiTestApp\App [C:\Gitlab-Runner\builds\ad375a1d\0\ApiTestApp.vcxproj]
C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\IDE\VC\VCTargets\Microsoft.CppCommon.targets(128,5): error MSB3073: if %errorlevel% neq 0 goto :cmEnd [C:\Gitlab-Runner\builds\ad375a1d\0\ApiTestApp.vcxproj]
C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\IDE\VC\VCTargets\Microsoft.CppCommon.targets(128,5): error MSB3073: C: [C:\Gitlab-Runner\builds\ad375a1d\0\bla\ApiTestApp\App\SOScanApiTestApp.vcxproj]
C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\IDE\VC\VCTargets\Microsoft.CppCommon.targets(128,5): error MSB3073: if %errorlevel% neq 0 goto :cmEnd [C:\Gitlab-Runner\builds\ad375a1d\0\\ApiTestApp.vcxproj]
C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\IDE\VC\VCTargets\Microsoft.CppCommon.targets(128,5): error MSB3073: "C:\Program Files\CMake-3.20.1\bin\cmake.exe" -E cmake_autogen C:/Gitlab-Runner/builds/ad375a1d/0/TestApp/App/CMakeFiles/SOScanApiTestApp_autogen.dir/AutogenInfo.json Release [C:\Gitlab-Runner\builds\ad375a1d\0\\ApiTestApp.vcxproj]
C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\IDE\VC\VCTargets\Microsoft.CppCommon.targets(128,5): error MSB3073: if %errorlevel% neq 0 goto :cmEnd [C:\Gitlab-Runner\builds\ad375a1d\0\\ApiTestApp.vcxproj]
C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\IDE\VC\VCTargets\Microsoft.CppCommon.targets(128,5): error MSB3073: :cmEnd [C:\Gitlab-Runner\builds\ad375a1d\0\\ApiTestApp.vcxproj]
C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\IDE\VC\VCTargets\Microsoft.CppCommon.targets(128,5): error MSB3073: endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone [C:\Gitlab-Runner\builds\ad375a1d\0\ApiTestApp.vcxproj]
C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\IDE\VC\VCTargets\Microsoft.CppCommon.targets(128,5): error MSB3073: :cmErrorLevel [C:\Gitlab-Runner\builds\ad375a1d\0\\ApiTestApp.vcxproj]
C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\IDE\VC\VCTargets\Microsoft.CppCommon.targets(128,5): error MSB3073: exit /b %1 [C:\Gitlab-Runner\builds\ad375a1d\0\\ApiTestApp.vcxproj]
C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\IDE\VC\VCTargets\Microsoft.CppCommon.targets(128,5): error MSB3073: :cmDone [C:\Gitlab-Runner\builds\ad375a1d\0\\ApiTestApp.vcxproj]
C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\IDE\VC\VCTargets\Microsoft.CppCommon.targets(128,5): error MSB3073: if %errorlevel% neq 0 goto :VCEnd [C:\Gitlab-Runner\builds\ad375a1d\0\ApiTestApp.vcxproj]
C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\IDE\VC\VCTargets\Microsoft.CppCommon.targets(128,5): error MSB3073: :VCEnd" wurde mit dem Code -1073741819 beendet. [C:\Gitlab-Runner\builds\ad375a1d\0\ApiTestApp.vcxproj
Current cmake version is
However, repeating the build serveral times, the errors show up for different modules, but always when moc/autogen is involved. Continuing the failed build will usually result in a successful build of the complete project.
And here the build log during a crash using "MSYS Makefiles"
AutoMoc: Reading dependencies from "BIN:/Utility_Test_autogen/UVLADIE3JM/moc_CoordinateMathTester.cpp.d"
AutoMoc: Reading dependencies from "BIN:/Utility_Test_autogen/UVLADIE3JM/moc_QObjectSelectionModelTester.cpp.d"
AutoMoc: Reading dependencies from "BIN:/Utility_Test_autogen/UVLADIE3JM/moc_QObjectListModelTester.cpp.d"
AutoMoc: Generating MOC compilation "BIN:/Utility_Test_autogen/mocs_compilation.cpp"
AutoGen: Writing the parse cache file "BIN:/Utility_Test_autogen.dir/ParseCache.txt"
AutoGen: Writing the settings file "BIN:/Utility_Test_autogen.dir/AutogenUsed.txt"
make[2]: *** [SO_QtUtility/tests/CMakeFiles/SO_QtUtility_Test_autogen.dir/build.make:71: Utility_Test_autogen] Error 127
make[1]: *** [CMakeFiles/Makefile2:5453: Utility_Test_autogen.dir/all] Error 2
with verbose automoc enabled. The build continues and will freeze late on, because there is one cmake process which does not return.
C:\c\Projects\git>cmake --version
cmake version 3.20.0
CMake suite maintained and supported by Kitware (kitware.com/cmake).
I am not sure if this has something to do with our project setup or is a bug in cmake. Any help on how to debug this issue further is appreciated.