-
Notifications
You must be signed in to change notification settings - Fork 71
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
java.lang.UnsatisfiedLinkError linking libc #3218
Comments
Hi
Unfortunately, GLIBC 2.31 that your machine has isn't in this list. That's pretty weird, because GLIBC 2.29 and 2.33 are supported. According to this report, few symbols were removed in GLIBC 2.31 comparing to 2.30. One of them is It is very unclear for me, but these symbols weren't re-added back according to these reports, but GLIDE is compatible with GLIBC 2.34 and works fine there. We need to track from which dependency these symbols ( |
@nkconnor As @Yury-Fridlyand mentioned, Glide is based on a native component, and as such should be built for targets. If you're interested in having Glide supporting Pop!_OS LTS, can you replace this issue from a bug to a feature request, with the relevant information for the request? Not to say that there is no user pain here, but specifically, it's not a distro we announce support for, hence it is not a bug. |
@avifenesh I appreciate the guidance. I would offer that Pop!_OS isn't a fringe distribution and generally matches Ubuntu, one of the most popular distributions for server programming. Ubuntu 20.04 is a LTS release, and as far as I know, ships with the same version of GLIBC. Pop! is also the default OS offered on System76 machines and very popular I feel like it's a stretch to say this is a feature request, but, you can do what you want with it! I can tell you I was forwarded here as an AWS customer and I would hope that they adjust their documentation on this topic to avoid wasting customer's time in the future. |
@nkconnor I'm sorry that you wasted your time. You're right, ubuntu is popular, no questions, and we support it. While Pop!_OS is an Ubuntu based distro, it has a customized version of the GNOME, called COSMIC, hence has differences in the libs and requires a targeted build, especially when running on a different machine type. Pop!_OS might be ranked comparably high in the PC linux distros ranking, but the lists are not showing the reality, ubuntu takes 30-40% market share, fedora and debian 10-15% each, so while a distro might be 6 in the list, it still might have less than 1% user base. Pop!_OS is a very interesting distro, especially because the system76 and I'm waiting for a while to try it. All the above is just for explaining the reasoning why some distros are supported and some not. It doesn't change the fact that we want to do what user's needs. We would be happy to add support, but we need to be aware of those requests. For the AWS issue, the problem is that it isn't mentions there which distros are supported? |
I just want to re-iterate this doesn't appear to be a Pop!_OS specific issue and as far as I can tell would effect all sorts of distributions including Ubuntu 20.04, which shares basically all the same libraries. You can see a minimal example of this in the following repository: Again, you can see the table above which shows some other distributions that share the same version of GLIBC |
@nkconnor Thanks for the example, I will reproduce. |
@avifenesh Please see above example which reproduces issue on Ubuntu 20.04 LTS. |
We need to track which of our dependency use |
@nkconnor I'm working on it, will update. |
@Yury-Fridlyand @nkconnor We need to understand if this is about the rust compilation, specifically, or is it the native code unique to Java. We will need to check better, but the solution might be simple, but will require a release. @nkconnor For the meanwhile, you can use 1.0, which is supported by glibc you have. |
@Yury-Fridlyand @yipin-chen Can we release java 1.3.1 from a build on Ubuntu 20.04? Or adding it to the build configuration of the core? |
I can confirm all tests pass when building locally on 20.04 (running Is the note about musl incompatibility still accurate? It seems that could be a possible target to remedy this issue. My understanding is that this will continue to happen and cause future incompatibilities as the output will continue to select whatever version of GLIBC is available on the CI server. |
@nkconnor the note about musl is still in place, and currently I'm exploring some options to reduce platform-specific dependency as a whole for the java client, by replacing some internal logic to an alternate design. |
The root cause of this issue might be the forward-incompatibility of GLIBC. Here's my finding: Ubuntu LTS versions and their corresponding default GLIBC versions
The "big change" of GLIBC 2.34Here's a quote from the Release Note of GLIBC 2.34:
To put it simply:
In the real world we might see some weird skipping of supported versions, as shown by @Yury-Fridlyand in his earlier comment, but I believe the big picture should be like so. ConclusionFor compatibility consideration, we should seriously consider using Ubuntu20.04 / GLIBC 2.31 to compile our rust code for all bindings, if a significant number of our users are still using an earlier GLIBC version. But on the other hand, GitHub is planning to fully retire @avifenesh @jonathanl-bq @Yury-Fridlyand could you please weight in on this? |
When you have glibc 33 a machine with glibc 35 will work because 35 "includes" 33. In each case we need to take this task and test it now, before we get to a real release. |
You can build in Docker like the example repo I made and linked above. It
would use the image glibc and make 20.04 and many others available I
believe.
…On Wed, Feb 26, 2025 at 3:37 AM Avi Fenesh ***@***.***> wrote:
When you have glibc 33 a machine with glibc will work because 35
"includes" 33.
So we need to build on 20.
We need to keep building on the lowest lts, or when building the rust to
set the target which is possible with rust.
When I develop locally, i change the target to check if it compiles.
Another option is keeping the CI on what is available by GH, and running
the CD on the ephemerals.
In each case we need to take this task and test it now, before we get to a
real release.
—
Reply to this email directly, view it on GitHub
<#3218 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/ABRMQUNJWNPYLRBYT2BAHWL2RV4NZAVCNFSM6AAAAABXRN2RN2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDMOBUGI4DMOBRGQ>
.
You are receiving this because you were mentioned.Message ID:
***@***.***>
[image: avifenesh]*avifenesh* left a comment (valkey-io/valkey-glide#3218)
<#3218 (comment)>
When you have glibc 33 a machine with glibc will work because 35
"includes" 33.
So we need to build on 20.
We need to keep building on the lowest lts, or when building the rust to
set the target which is possible with rust.
When I develop locally, i change the target to check if it compiles.
Another option is keeping the CI on what is available by GH, and running
the CD on the ephemerals.
In each case we need to take this task and test it now, before we get to a
real release.
—
Reply to this email directly, view it on GitHub
<#3218 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/ABRMQUNJWNPYLRBYT2BAHWL2RV4NZAVCNFSM6AAAAABXRN2RN2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDMOBUGI4DMOBRGQ>
.
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
Also an option |
SBT Dependency
"io.valkey" % "valkey-glide" % "1.3.0" classifier "linux-x86_64"
Error
System Info
ldd --version
ldd (Ubuntu GLIBC 2.31-0ubuntu9) 2.31
Copyright (C) 2020 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.
lsb_release -a
Distributor ID: Pop
Description: Pop!_OS 20.04 LTS
Release: 20.04
Codename: focal
lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
Address sizes: 46 bits physical, 48 bits virtual
CPU(s): 20
On-line CPU(s) list: 0-19
Thread(s) per core: 2
Core(s) per socket: 10
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 85
Model name: Intel(R) Core(TM) i9-9820X CPU @ 3.30GHz
The text was updated successfully, but these errors were encountered: