cmake 3.28.x hanging on configure with arm64/rosetta
We have been getting reports of devs on macOS builds hanging through docker. We have reproduce with both versions 3.28.x but not 3.27.6. We have reproduced with rhel 7, 8, and ubuntu. The only commonality is 3.28.x, macOS, docker with buildkit, and rosetta (because the images were for amd64).
files
cmake_minimum_required(VERSION 3.20)
project(Test)
FROM <IMAGE>
RUN yum install -y make.x86_64
COPY cmake-3.28.1-linux-x86_64.tar.gz /
RUN tar -xf /cmake-3.28.1-linux-x86_64.tar.gz
RUN mkdir /src/
COPY CMakeLists.txt /src/
COPY test.sh /src/
RUN chmod +x /src/test.sh
ENV PATH="${PATH}:/cmake-3.28.1-linux-x86_64/bin"
WORKDIR /src/
ENTRYPOINT [ "/src/test.sh" ]
#!/bin/sh
for i in `seq 1 10` ; do
mkdir build$i
cd build$i
cmake .. &
cd ..
done
wait
We suspect that it relates to !8665 (merged) from a trace we got while hung:
(gdb) where
#0 0x00007ffffecbd0c3 in __epoll_wait_nocancel () from /lib64/libc.so.6
#1 0x0000000000e1b13d in uv.io_poll ()
#2 0x0000000000e0c066 in uv_run ()
#3 0x00000000006ab72e in cmExecuteProcessCommand(std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, cmExecutionStatus&) ()
#4 0x00000000005dcc4f in std::_Function_handler<bool (std::vector<cmListFileArgument, std::allocator<cmListFileArgument> > const&, cmExecutionStatus&), cmState::AddBuiltinCommand(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool (*)(std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, cmExecutionStatus&))::lambda(std::vector<cmListFileArgument, std::allocator<cmListFileArgument> > const&, cmExecutionStatus&)#1 <GO>>::_M_invoke(std::_Any_data const&, std::vector<cmListFileArgument, std::allocator<cmListFileArgument> > const&, cmExecutionStatus&) ()
#5 0x00000000005893a7 in cmMakefile::ExecuteCommand(cmListFileFunction const&, cmExecutionStatus&, std::optional<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >) ()