GLIBC_2.29 not found

I tried to launch duniter docker image (duniter/duniter-v2s:debug-latest) on my machine and got

duniter: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.29' not found (required by duniter)

I thought docker job was to manage these kind of dependencies errors.

@Pini, did you already uploaded the image with these changes?
Debian version change could be the reason.

No I didn’t.

It resembles the kind of issue that static linkng can bring up.

I did bisect the containers, and found the issue appears between these two hashes:

In the end, the source would be these commits, but they do not seem to contain a change which would produce this error.

May be the addition of maplit?

1 Like

I’ve just found the job from which this image upload was done.

I don’t think the issue is related to code change, but to some changes in the image paritytech/ci-linux:production used to build the executable which might not be binary compatible with Debian buster anymore.

The changes I propose with !152 should fix that because the build will take place into the same image as the target container.

2 Likes

In fact, they bumped their image from buster to bullseye.

1 Like

We have two choices then: merge !152 now or bump the target Debian image to bullseye-slim.

1 Like

Let’s solve things separately.

Third choice: change the build stage image to paritytech/ci-linux:1.68.2-buster.

Any of these options, latest tag is still functional.
We can force buster in the meantime to fix the issue, and bump to bullseye whenever needed, thing which will have to be done anyway at some point.

=> !162.

1 Like

The Rust compiler dynamically links to the host’s version of glibc. This is stupid but there is no obvious workaround. Hence we have to build the distributables on the oldest supported distro.

1 Like

Thanks a lot for this amazingly quick fix! It will help @flodef to start working on the indexer with docker images instead of self-built binary ^^

1 Like