I am running into intermittent “Text file busy” errors when trying to run some simple ROS tests that are built with catkin_make (see below for details).
According to the discussions at https://bitbucket.org/osrf/srcsim/issues/218/docker-build-error and
Running chmod on file results in 'text file busy' when running straight after. · Issue #9547 · moby/moby · GitHub, this sounds like it is an AUFS race condition with subsequent commands interacting with the same files. Consistent with this, I have not yet seen this issue when running circleci local execute
with an overlay2 storage driver.
The other workaround suggested by the links above is to insert a wait
or a sync
between the offending commands. Unfortunately, in my case, the suspected commands are buried within catkin_make files generated by cmake, so I cannot easily modify them.
Question 1) Is there any way to run circleci in a docker container with the overlay2 storage driver?
Question 2) Does anyone have any other suggestion on how to resolve this problem?
Running command: “cmake /opt/artemis/src -DCATKIN_DEVEL_PREFIX=/opt/artemis/devel -DCMAKE_INSTALL_PREFIX=/opt/artemis/install -G Unix Makefiles” in “/opt/artemis/build”
– Using CATKIN_DEVEL_PREFIX: /opt/artemis/devel
– Using CMAKE_PREFIX_PATH: /opt/artemis/devel;/opt/ros/kinetic
– This workspace overlays: /opt/artemis/devel;/opt/ros/kinetic
– Using PYTHON_EXECUTABLE: /usr/bin/python
– Using Debian Python package layout
– Using empy: /usr/bin/empy
– Using CATKIN_ENABLE_TESTING: ON
– Call enable_testing()
– Using CATKIN_TEST_RESULTS_DIR: /opt/artemis/build/test_results
– Found gmock sources under ‘/usr/src/gmock’: gmock will be built
– Found gtest sources under ‘/usr/src/gmock’: gtests will be built
– Using Python nosetests: /usr/bin/nosetests-2.7
– catkin 0.7.14
– BUILD_SHARED_LIBS is on
– Using CATKIN_BLACKLIST_PACKAGES: sas_rviz_plugins;ros_visualizer
CMake Error at /opt/ros/kinetic/share/catkin/cmake/safe_execute_process.cmake:11 (message):
execute_process(/opt/artemis/build/catkin_generated/env_cached.sh
“/usr/bin/python” “/usr/bin/empy” “–raw-errors” “-F”
“/opt/artemis/build/catkin_generated/order_packages.py” “-o”
“/opt/artemis/build/catkin_generated/order_packages.cmake”
“/opt/ros/kinetic/share/catkin/cmake/em/order_packages.cmake.em”) returned
error code Text file busy
Call Stack (most recent call first):
/opt/ros/kinetic/share/catkin/cmake/em_expand.cmake:25 (safe_execute_process)
/opt/ros/kinetic/share/catkin/cmake/catkin_workspace.cmake:35 (em_expand)
CMakeLists.txt:63 (catkin_workspace)
Something similar was previously reported as a bug here on circleci as Moving then executing script in Dockerfile causes "Text file busy" error, but then worked around by adding sync
commands.