[JNI][Gandiva] LLVM generated code can't access some system functions on certain platforms
- Ngôn ngữ chính
- Java
- Star
- 94
- Fork
- 152
- Merge trung bình
- 3 ngày 16 giờ
- Pull request đã merge (30 ngày)
- 11
Mô tả
### Describe the bug, including details regarding any error messages, version, and platform.
When linux loads libraries there are different options for symbols visibility like: RTLD_LOCAL, RTLD_GLOBAL. Default in Java is RTLD_LOCAL which makes all symbols inside Gandiva library only visible to the Gandiva library.
The problem is when LLVM compiles code and loads it into Java process that code won't be able to find any symbols imported by Gandiva. One example is 'sinhl' from libgcc which causes sinh function to fail when it is present in SQL query executed by Dremio using Gandiva engine. By importing JNA package we can control how to load Gandiva library and set Global symbol visibility.
See also: https://github.com/apache/arrow/issues/40839
Hướng dẫn đóng góp
Hướng nghiên cứu
Bắt đầu với đường dẫn tải thư viện JNI/Gandiva và hành vi RTLD_LOCAL mặc định của Java được mô tả trong issue; so sánh với cách tiếp cận của JNA và issue Apache Arrow liên quan. Tái hiện lỗi sinh liên quan đến sinhl trên một nền tảng Linux bị ảnh hưởng, sau đó xác minh rằng mã do LLVM tạo ra có thể phân giải các ký hiệu hệ thống được Gandiva import.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- java
- Lĩnh vực
- backend
- Loại issue
- Lỗi
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức độ hoạt động
- Đình trệ
- Độ rõ ràng
- Khá rõ ràng
- Mức phù hợp với người mới
- 35/100