Hello Sagar K,
This error occurs because Azure Pipelines automatically downloads the latest Artifact Tool when it isn’t already in your agent’s cache. The new 0.2.399 release was built against a more recent GCC C++ runtime and therefore looks for the GLIBCXX_3.4.20
and GLIBCXX_3.4.21
symbols. On RHEL 7.9, the system library /lib64/libstdc++.so.6
only provides up to GLIBCXX_3.4.19
, so the tool fails to load those newer symbols. Your previous pipelines worked because version 0.2.350 did not require those symbols.
To keep using 0.2.399 without upgrading your OS, you can install Red Hat’s Software Collections devtoolset-9 to provide a newer libstdc++
. For example, on each self-hosted agent run
sudo yum install -y centos-release-scl
sudo yum install -y devtoolset-9
scl enable devtoolset-9 bash
export LD_LIBRARY_PATH=/opt/rh/devtoolset-9/root/usr/lib64:$LD_LIBRARY_PATH
Then start your agent or run the Universal Packages task inside that shell. The artifacttool binary will pick up the updated C++ libraries and run without error.
If you’d prefer to continue using the version that already works, you can pin your pipeline to 0.2.350. Add an Artifact Tool installer step before your UniversalPackages task:
- task: ArtifactToolInstaller@1
inputs:
versionSpec: '0.2.350'
This ensures the older, compatible tool is present and stops the agent from fetching 0.2.399.
For future resilience, you might consider building inside a container based on RHEL 8 or UBI 8, which include a modern C++ runtime by default and will stay compatible with upcoming Artifact Tool updates.
Hope this helps!
If the answer is helpful, please click Accept Answer and kindly upvote it. If you have any further questions, please reply back.