Crash in target_* commands called from -C initial cache with no -G
Hello & Good Day-
I fat fingered a bug in cmGlobalGenerator::FindTarget.
Version
cmake --version
cmake version 3.29.3
Reproduction
echo "target_link_libraries(z)" > foo.bar
cmake -C foo.bar
echo "target_link_options(z PRIVATE -lm)" > foo.bar
cmake -C foo.bar
echo "target_precompile_headers(z PRIVATE my_pch.h)" > foo.bar
cmake -C foo.bar
echo "target_sources(z PRIVATE source.cpp)" > foo.bar
cmake -C foo.bar
echo "target_compile_definitions(z PRIVATE MY_DEFINITION)" > foo.bar
cmake -C foo.bar
echo "target_compile_features(z PRIVATE cxx_std_11)" > foo.bar
cmake -C foo.bar
echo "target_compile_options(z PRIVATE -Wall)" > foo.bar
cmake -C foo.bar
echo "target_include_directories(z PRIVATE /path/to/include)" > foo.bar
cmake -C foo.bar
Host
kern.version: Darwin Kernel Version 23.5.0: Wed May 1 20:09:52 PDT 2024; root:xnu-10063.121.3~5/RELEASE_X86_64
kern.osversion: 23F79
kern.iossupportversion: 17.5
kern.osproductversioncompat: 10.16
kern.osproductversion: 14.5
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.5.sdk
Apple clang version 15.0.0 (clang-1500.3.9.4)
Target: x86_64-apple-darwin23.5.0
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
Darwin Cryptex Management Interface Version 2.0.0: Wed Jun 29 00:19:41 PDT 2022; root:libcryptex_executables-170.100.24~552/cryptexctl/WEN_ETA_X86_64
machdep.cpu.brand_string: Intel(R) Core(TM) i7-8700B CPU @ 3.20GHz
machdep.cpu.brand: 0
Minimized PoC
echo "target_link_directories(z PRIVATE /path/to/lib)" > foo.bar
cmake -C foo.bar
Short Stack Trace
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 cmake 0x105f6a058 std::__1::__tree_const_iterator<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>, std::__1::__tree_node<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>, void*>*, long> std::__1::__tree<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>, std::__1::__map_value_compare<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>, true>, std::__1::allocator<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>>>::find<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&) const + 18
1 cmake 0x10609e55e cmGlobalGenerator::FindTarget(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, bool) const + 32
2 cmake 0x1062ef478 cmTargetPropCommandBase::HandleArguments(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, unsigned int) + 188
3 cmake 0x1062ea91c cmTargetIncludeDirectoriesCommand(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>> const&, cmExecutionStatus&) + 82
I did a Search prior to this Report and did not find anything similar to this Crash in cmGlobalGenerator::FindTarget.
Sorry for the Noise if this is already known or reported.
Edited by David Hoyt