[JNI][Gandiva] LLVM generated code can't access some system functions on certain platforms
- 主要語言
- Java
- 星號
- 94
- 分支
- 152
- 平均合併
- 3 天 16 小時
- 30 天內合併 PR
- 11
描述
### 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
貢獻指南
研究方向
從 issue 中描述的 JNI/Gandiva 程式庫載入路徑和 Java 預設的 RTLD_LOCAL 行為著手;將其與 JNA 作法及相關的 Apache Arrow issue 進行比較。在受影響的 Linux 平台上重現涉及 sinhl 的 sinh 失敗,然後驗證 LLVM 產生的程式碼能夠解析 Gandiva 匯入的系統符號。
由索引模型根據 Issue 內容生成。
評估
- 技術堆疊
- java
- 領域
- backend
- Issue 類型
- 缺陷
- 難度
- 4/5
- 預估耗時
- 3-5 天
- 活躍度
- 停滯
- 描述清晰度
- 基本清楚
- 新手友好度
- 35/100