mips64 / mips64el CI: spurious FPU exception flags under qemu-user
还没有人认领这个 Issue。
评估
- 难度
- 4/5
- 预计耗时
- 3-5 天
- 新手友好度
- 38/100
- Issue 类型
- 缺陷
- 描述清晰度
- 基本清楚
- 活跃度
- 冷清
- 技术栈
- c, github-actions, ubuntu
调研方向
从 .github/workflows/cross.yml 开始,在固定的 Ubuntu 24.04 qemu-user 环境下复现 make test,包括 test/test-float 和 test/test-double。比较 bare metal 或 qemu-system-mips64 上的异常标志行为,并检查更新版本的 qemu 是否会改变该行为。确定是否可以重新启用 CI 条目,或记录并实现等效的异常测试跳过,即视为完成。
由索引模型根据 Issue 内容生成。
描述
The mips64 and mips64el entries in .github/workflows/cross.yml are disabled because the in-tree test suite fails under qemu-user on Ubuntu 24.04. Disabled in #346.
Symptom
make test (which runs test/test-float and test/test-double) reports ~1600 failures, all of the form:
```
Failure: yn (1, 1.5) == -0.41230862697391129595: Exception "Invalid operation" set
Failure: yn (1, 2.0) == -0.10703243154093754689: Exception "Divide by zero" set
```
The computed value is correct in each case — the test fails only because the FPU exception flag is unexpectedly set after the call. No numeric disagreement.
Failing run (mips64): https://github.com/JuliaMath/openlibm/actions/runs/27987699090/job/82832967366
Failing run (mips64el): https://github.com/JuliaMath/openlibm/actions/runs/27987699090/job/82832967387
32-bit mips and mipsel pass under the same qemu / toolchain combination, which strongly suggests this is qemu-user mishandling MIPS64 FPU status register semantics rather than an openlibm bug. Possibly related: qemu's softfloat IEEE flag mapping for the n64 ABI.
To investigate
- Reproduce on bare metal or under
qemu-system-mips64(full-system) and compare flag behavior. - Check whether
qemu-user >= <some version>fixes it (current pin is Ubuntu 24.04's qemu). - If qemu-user is unfixable here, decide whether to keep mips64 CI entirely or run only with exception-flag assertions skipped (the openlibm-test suite has
SKIP_FP_EXCEPT_TEST=1; the in-tree suite would need an equivalent knob).
How to re-enable
In .github/workflows/cross.yml, uncomment the two matrix entries:
```yaml
- { arch: mips64, triple: mips64-linux-gnuabi64 }
- { arch: mips64el, triple: mips64el-linux-gnuabi64 }
```
- 主要语言
- C
- 星标
- 637
- 派生
- 164
- PR 合并指标
- 30 天内没有已合并 PR
环境准备
这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
JuliaMath/openlibm 的其他 Issue
-
难度 5/5 一周以上 新手友好度 25/100
-
难度 4/5 3-5 天 新手友好度 35/100
-
Non-standard behavior of tgamma()可能已有人在做 @ViralBShah 于 126 天前认领。 未关闭
难度 3/5 1-2 天 新手友好度 45/100
-
难度 4/5 3-5 天 新手友好度 35/100
-
expm1l returns NaN instead of valid number可能已有人在做 @ViralBShah 于 126 天前认领。 未关闭
难度 3/5 1-2 天 新手友好度 45/100
查看 JuliaMath/openlibm 的全部 Issue
相似的 Issue
-
难度 2/5 1-3 小时 新手友好度 78/100
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 76/100
维护者通常 1 天内回复
-
难度 1/5 1 小时以内 新手友好度 72/100
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 78/100
yunusemreyl/omen-space#337 ·
维护者通常 1 天内回复
-
dependency component: oneMKL module: dpclang
难度 2/5 1-3 小时 新手友好度 82/100
intel/torch-xpu-ops#5880 ·
维护者通常 2 天内回复