Error looking up function from current process on Linux
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 35/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Đình trệ
- Công nghệ
- java, linux
- Lĩnh vực
- operating-systems
Hướng nghiên cứu
Tái hiện trường hợp Linux x64 với Java 25, sau đó lần theo NativeLibrary.getFunction và Function từ stack được báo cáo để kiểm tra việc tra cứu symbol trong tiến trình hiện tại. So sánh Native.load(null, ZstdJna.class) với workaround tải thư viện một cách tường minh và với Java Foreign Function & Memory API. Được xem là hoàn tất khi việc tra cứu ZSTD_createDStream được báo cáo thành công mà không cần tải tường minh thư viện dùng chung.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
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
- Ngôn ngữ chính
- Java
- Star
- 8.9k
- Fork
- 1.7k
- Merge trung bình
- 1 ngày 13 giờ
- Pull request đã merge (30 ngày)
- 1
Chuẩn bị môi trường
Dự án này không cung cấp dev container, Dockerfile hay hướng dẫn đóng góp, nên bạn cần tự thiết lập môi trường: hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của java-native-access/jna
-
`Native.typeOptions` never releases library interfaces, leaking classloadersCó thể đã có người làm @curforever đã nhận 1 ngày trước. Đang mở
Độ khó 4/5 1-2 ngày Mức phù hợp với người mới 48/100
java-native-access/jna#1742 ·
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 66/100
java-native-access/jna#1738 ·
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 45/100
java-native-access/jna#1736 ·
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 65/100
java-native-access/jna#1717 ·
-
Windows32Exception - The parameter is incorrectCó thể đã có người làm @marktech0813 đã nhận 337 ngày trước. Đang mở
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 35/100
java-native-access/jna#1700 · 11 bình luận ·
Tất cả issue của java-native-access/jna
Issue tương tự
-
Status: Pending Review Type: Feature Request
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 82/100
OpenRefine/OpenRefine#8019 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
`timer` rule rejects dates the engine acceptsCó thể đã có người làm @MFA-G đã nhận hôm nay. Đang mởbug ready
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
camunda/bpmnlint-plugin-camunda-compat#281 · 3 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
status: waiting-for-triage
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 74/100
Maintainer thường phản hồi trong vòng 1 ngày