using CSV
using HTTP
f = CSV.File(HTTP.get("https://covidtracking.com/api/v1/states/daily.csv").body)
julia: symbol lookup error: /home/affans/.julia/artifacts/746f3085962108a6a143ae685781235717cec381/lib/libmbedtls.so: undefined symbol: mbedtls_x509_crt_verify_restartable
[affans@hpc covid19abm]$
Just upgraded to CSV 0.7 and this started happening. So seems that maybe CSV upgraded an artifact or something? I saw lots of artifacts and libraries being downloaded when CSV was installing/building.
Version info, environment, and OS are giving in posts below.
EDIT:
It has nothing to do with CSV. I can reproduce with HTTP alone.
julia> using HTTP
julia> HTTP.get("https://covidtracking.com/api/v1/states/daily.csv").body
julia: symbol lookup error: /home/affans/.julia/artifacts/746f3085962108a6a143ae685781235717cec381/lib/libmbedtls.so: undefined symbol: mbedtls_x509_crt_verify_restartable
[affans@hpc contact_tracing]$
Could you please provide more information? Operating system, versions of the packages involved (preferably in a clean environment where you install only CSV and HTTP), etc…
Downloaded the binary from the website and is currently sitting in my home directory. This is a cluster envrionment and I don’t have access to sudo. I also noticed when downloaded CSV to 0.7, it was downloading a lot of artifacts, after which my code stopped working (which is why I initially thought it was a CSV problem).
From the error, it seems that it’s not using the system library though but the one local to me, so wouldn’t that be a problem?
global libmbedx509_path = normpath(joinpath(artifact_dir, libmbedx509_splitpath...))
# Manually `dlopen()` this right now so that future invocations
# of `ccall` with its `SONAME` will find this path immediately.
global libmbedx509_handle = dlopen(libmbedx509_path)
push!(LIBPATH_list, dirname(libmbedx509_path))
# Manually `dlopen()` this right now so that future invocations
# of `ccall` with its `SONAME` will find this path immediately.
global libmbedtls_handle = dlopen(libmbedtls_path)
push!(LIBPATH_list, dirname(libmbedtls_path))
No, those files are automatically generated, a manual PR would be overwritten.
For a while, yes.
Not sure what “ELIF” means here. If you’re asking for an explanation, libmdetls.so depends on libmbedx509.so, as you can see with ldd ~/.julia/artifacts/746f3085962108a6a143ae685781235717cec381/lib/libmbedtls.so. In the JLL wrapper libmdetls.so is being opened before libmbedx509.so. Not finding libmbedx509.so already available, when trying to dlopen libmbedtls.so your dynamic loader decided to open the system libmbedx509.so, instead of the one from the artifacts (which is what happens in my case). By inverting the opening order you make sure that the dynamic loader doesn’t decide to open the system library.
Okay. last question, somewhat non-related. I realize I don’t infact need to use HTTP.get() for my purpose, and download(url) |> CSV.File works for me. So how do I un-dev so that I go back to the “system” default.