Process.spawn with IO.pipe output fails on Java 21 + warbler
还没有人认领这个 Issue。
评估
调研方向
The failure is an EBADF raised from spawn when Warbler packages a JRuby app and runs on Java 21, so the trigger lies in JRuby's process and file-descriptor handling rather than in Warbler's own Ruby files. Reproduce with the minimal IO.pipe and spawn('ls', out: out_w) snippet from the body under java21 with and without a Warbler war. Done means the spawn succeeds inside the war and the captured output matches the non-war run.
由索引模型根据 Issue 内容生成。
描述
Using Open3.capture3 fails when running with java21 from a warbler jar with
ERROR: org.jruby.embed.EvalFailedException: (EBADF) Bad file descriptor - ls
This works correctly with java 11 and warbler, or with java 21 and no warbler. This is tested on jruby 9.4.12 and warbler 2.0.5.
I simplified the Open3 code down to this repro:
out_r, out_w = IO.pipe
pid = spawn('ls', out: out_w)
wait_thr = Process.detach(pid)
out_w.close
begin
out_reader = Thread.new { out_r.read }
output = out_reader.value
puts output
ensure
out_r.close
wait_thr.join
end
When running this, it will fail at spawn. Spawning without an output pipe works fine in the java21+warbler configuration.
- 主要语言
- Ruby
- 星标
- 901
- 派生
- 206
- 平均合并
- 1 天 10 小时
- 30 天内合并 PR
- 3
环境准备
这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
jruby/warbler 的其他 Issue
-
难度 4/5 3-5 天 新手友好度 35/100
-
难度 4/5 一周以上 新手友好度 25/100
-
难度 4/5 3-5 天 新手友好度 22/100
-
难度 5/5 一周以上 新手友好度 12/100
-
难度 5/5 一周以上 新手友好度 12/100
相似的 Issue
-
难度 2/5 1-3 小时 新手友好度 74/100
glossarist/glossarist-ruby#247 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 76/100
维护者通常 1 天内回复
-
🐛 bug 🧑💼 conseillers
难度 2/5 1-3 小时 新手友好度 65/100
betagouv/conseillers-entreprises#4768 ·
维护者通常 1 天内回复
-
`github-events` aborts the repository scan when a closed pull's API payload has a null `head`可能已有人在做 @renyamamoto2026-cmyk 今天认领。 未关闭
难度 2/5 1-3 小时 新手友好度 82/100
zerocracy/judges-action#2823 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 67/100
维护者通常 1 天内回复