UnsatisfiedLinkError: /lib64/libstdc++.so.6: version `CXXABI_1.3.8' not found (required by /gpfs/fs1/home/mg1646/.cache/JNA/temp/jna1408301896691356969.tmp)

I installed hail yesterday using the “pip install hail command”, and it seemed to install successfully. Today, I am hoping to apply it to running an in-house sample QC script for a single VCF. I am encountering an error shown below:

I saw on prior discussions that this might be related to a updated version of GCC that needs to be uploaded. I checked my gcc version and it was “gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44)”. I installed an updated version using “conda install -c conda-forge gxx”. This seemed to install successfully as now my gcc version is listed as “gcc (conda-forge gcc 12.1.0-17) 12.1.0”. However, the issue still persists. I tried running “pip install hail” again, but that did not work.

I am wondering if you have any suggestions for how to troubleshoot this issue. Thank you in advance for your help.

hail error_forum.txt (9.7 KB)

Hey @mgarcia ,

I’m sorry to hear you’re still having trouble. This error means that the C++ standard library installed on your machine is very old. The C++ standard library is not the same as the C++ compiler. Your conda command appears to have installed a recent C++ compiler (GCC in particular). It appears to have not changed the libstdc++ version you’re using (the /lib64/libstdc++.so.6 file).

It seems to me that you’re using some institutional HPC cluster. You should contact your institution’s HPC cluster admins and ask them how to make a newer C++ standard library available to your code.

The 1.3.8 C++ ABI was made available in GCC 4.9.0:

GCC 4.9.0: GLIBCXX_3.4.20, CXXABI_1.3.8

Which was released in 2014:

GCC 4.9.0
April 22, 2014 (changes, documentation)

GCC 4.8.5 (and the associated standard library) is a very old version of GCC. It was released before the Hail project even existed.

If possible, you’ll have a simpler experience using Hail inside a more predictable environment such as:

  1. A Google, Amazon, or Microsoft cloud VM.
  2. A Docker container (e.g. hailgenetics/hail).
  3. A MacBook.
  4. A Linux server that you control.

Thank you for your response @danking.

For clarification, I am working in an anaconda environment that I am using exclusively for hail. Is there anything specific you would recommend for updating the C++ standard library in my environment that would not involve updating this for the entire HPC cluster?

Every HPC cluster has a different system for shadowing shared libraries with different versions. At the Broad, the tool is called “use”. Your HPC cluster admins should be able to help you configure your environment to use a newer version of the C++ standard library. These utilities may use the LD_PRELOAD environment variable to ensure a different version of libstdc++ is loaded.