Error looking up function from current process on Linux
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Accessibilité débutants
- 35/100
- Type d'issue
- Bug
- Clarté
- Plutôt claire
- Activité
- À l'abandon
- Stack technique
- java, linux
- Domaine
- operating-systems
Piste de recherche
Reproduisez le cas Linux x64 avec Java 25, puis suivez NativeLibrary.getFunction et Function depuis la stack trace signalée pour examiner la recherche de symboles dans le processus actuel. Comparez Native.load(null, ZstdJna.class) avec le contournement qui charge explicitement la bibliothèque et avec la Java Foreign Function & Memory API. Le travail est terminé lorsque la recherche signalée de ZSTD_createDStream réussit sans charger explicitement la bibliothèque partagée.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Description
JNA seems to be unable to look up functions from the current process, specifically on Linux x64, while the same code works fine on Windows x64 and macOS aarch64. The documentation says JNA should look into the current process if null is passed to Native.load.
Additional details
-
The Foreign Function & Memory API from Java 22 finds all functions and all tests succeed
-
nmseems to indicate the function is in the shared library, and isn't mangled -
The only workaround is to let JNA load the shared library by
Native.load("/path/to/libzstd.so", ZstdJna.class)
Repro code
Using the Linux x64 binary found at https://github.com/freya022/discord-zstd-java/actions/runs/18886251057
public interface ZstdJna extends Library {
ZstdJna INSTANCE = Native.load(null, ZstdJna.class);
Pointer ZSTD_createDStream();
}
public class Repro {
public static void main(String[] args) {
System.load("/path/to/libzstd.so");
ZstdJna.INSTANCE // Fine
.ZSTD_createDStream(); // Fails
}
}
Environment
Java Version: OpenJDK 25+36
JNA Version: 5.18.1 (also tested 4.4.0)
Operating System: Ubuntu 24.04 GitHub Actions runner (image details), also tested on a Kubuntu VM
C/C++ Compiler: GCC 13.3.0
Error
java.lang.UnsatisfiedLinkError: Error looking up function 'ZSTD_createDStream': /usr/lib/jvm/java-25-openjdk-amd64/bin/java: undefined symbol: ZSTD_createDStream
at com.sun.jna.Function.<init>(Function.java:255)
at com.sun.jna.NativeLibrary.getFunction(NativeLibrary.java:618)
at com.sun.jna.NativeLibrary.getFunction(NativeLibrary.java:594)
at com.sun.jna.NativeLibrary.getFunction(NativeLibrary.java:580)
at com.sun.jna.Library$Handler.invoke(Library.java:248)
at jdk.proxy3/jdk.proxy3.$Proxy13.ZSTD_createDStream(Unknown Source)
at dev.freya02.discord.zstd.jna.ZstdJNATest.test_decompression(ZstdJNATest.java:36)
at java.base/java.lang.reflect.Method.invoke(Method.java:565)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1604)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1604)
Workflow details if necessary: https://github.com/freya022/discord-zstd-java/actions/runs/18891473842
- Langage dominant
- Java
- Étoiles
- 8.9k
- Forks
- 1.7k
- Merge moyen
- 1 j 13 h
- PR mergées (30 j)
- 1
Préparer son environnement
Ce projet ne fournit ni conteneur de développement, ni Dockerfile, ni guide de contribution : l'installation est à votre charge. Commencez par son README, et consultez notre guide de la première contribution pour les étapes générales.
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de java-native-access/jna
-
`Native.typeOptions` never releases library interfaces, leaking classloadersPeut-être pris @curforever l’a pris il y a 4 jours. Ouverte
Difficulté 4/5 1-2 jours Accessibilité débutants 48/100
java-native-access/jna#1742 ·
-
Difficulté 4/5 3-5 jours Accessibilité débutants 66/100
java-native-access/jna#1738 ·
-
Difficulté 4/5 3-5 jours Accessibilité débutants 45/100
java-native-access/jna#1736 ·
-
Difficulté 3/5 1-2 jours Accessibilité débutants 65/100
java-native-access/jna#1717 ·
-
Windows32Exception - The parameter is incorrectPeut-être pris @marktech0813 l’a pris il y a 340 jours. Ouverte
Difficulté 4/5 3-5 jours Accessibilité débutants 35/100
java-native-access/jna#1700 · 11 commentaires ·
Toutes les issues de java-native-access/jna
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
-
bug
Difficulté 1/5 Moins d'une heure Accessibilité débutants 88/100
PhasetransCrystal/FPSMatch#47 ·
Les mainteneurs répondent en général sous 1 jour
-
Remove unactionable info logOuvertebug
Difficulté 1/5 Moins d'une heure Accessibilité débutants 76/100
apache/maven-toolchains-plugin#205 · 1 commentaire ·
Les mainteneurs répondent en général sous 2 jours
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 90/100
Les mainteneurs répondent en général sous 1 jour
-
type: bug
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
Les mainteneurs répondent en général sous 1 jour