Undefined behaviour when calling ioctl() multiple times
还没有人认领这个 Issue。
评估
- 难度
- 4/5
- 预计耗时
- 3-5 天
- 新手友好度
- 35/100
- Issue 类型
- 缺陷
- 描述清晰度
- 基本清楚
- 活跃度
- 停滞
- 技术栈
- java
调研方向
先从 issue 中的 LibC 接口和 getWindowSize() 复现开始,然后在所述的 macOS、Apple M1 和 GraalVM 设置上运行循环。检查在重复调用 ioctl() 期间,winsize 参数如何通过 JNA 表示和传递。完成的标准是重复调用不再返回错误,也不再因 SIGSEGV、非法指令或堆损坏而终止。
由索引模型根据 Issue 内容生成。
描述
JNA version: 5.15.0
JVM: GraalVM CE 17.0.9+9.1 (build 17.0.9+9-jvmci-23.0-b22)
OS: macOS 14.7
CPU: Apple M1 (64-bit)
public interface LibC extends Library {
LibC libC = Native.load("c", LibC.class);
int TIOCGWINSZ = 0x40087468; // this is definitely correct, I've checked it with C
int ioctl(int fd, int request, winsize winsize);
}
public static int getWindowSize() {
val ttysize = new winsize();
val returnCode = libC.ioctl(0, TIOCGWINSZ, ttysize);
if (returnCode != 0) {
throw new RuntimeException("There was a problem calling ioctl(): " + returnCode);
}
return ttysize.ws_col;
}
for (int i = 0; i < 100; i++) {
System.out.println(getWindowSize());
}
running this code results in either:
- ioctl() returning -1
- SIGSEGV
- Illegal instruction: 4
- Heap corruption detected
- 主要语言
- Java
- 星标
- 8.9k
- 派生
- 1.7k
- PR 合并指标
- 30 天内没有已合并 PR
环境准备
这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
java-native-access/jna 的其他 Issue
-
难度 2/5 1-3 小时 新手友好度 88/100
java-native-access/jna#1740 ·
-
难度 4/5 3-5 天 新手友好度 66/100
java-native-access/jna#1738 ·
-
难度 4/5 3-5 天 新手友好度 45/100
java-native-access/jna#1736 ·
-
难度 3/5 1-2 天 新手友好度 65/100
java-native-access/jna#1717 ·
-
Windows32Exception - The parameter is incorrect可能重新可做 @marktech0813 于 330 天前认领,目前没有进行中的 PR。 未关闭
难度 4/5 3-5 天 新手友好度 35/100
java-native-access/jna#1700 · 11 条评论 ·
查看 java-native-access/jna 的全部 Issue
相似的 Issue
-
status: team-only type: dependency-upgrade
难度 2/5 1-3 小时 新手友好度 65/100
spring-projects/spring-boot#52099 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 67/100
tchiotludo/akhq#3307 · 1 个 reaction ·
维护者通常 1 天内回复
-
status: waiting-for-triage type: bug
难度 2/5 1-3 小时 新手友好度 78/100
spring-projects/spring-security#19847 ·
维护者通常 1 天内回复
-
architecture
难度 2/5 1-3 小时 新手友好度 82/100
DiegoMicali/MovieFlix#16 ·
-
Bug Unverified
难度 2/5 1-3 小时 新手友好度 64/100
维护者通常 1 天内回复