-
-
Notifications
You must be signed in to change notification settings - Fork 765
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Remote compilation fails on mingw64 #2504
Comments
server 端都 build 完了,client 跪在 xmake -r 看不懂,再完整操作一遍,给完整log 不要删减,server 端先切到前台运行 直接抓log |
windows client log:
linux server log:
我补充了下细节,我在 mingw64 bash 敲下 xmake f 后,一共再次摁下四次回车,其中前两次回车导致的结果我在 linux server log 中已经注解了,第三次回车(这时候 server 已经挂了) client 这边没有反应, 第四次回车报 |
先加上 -y 试试,还需要回车么。。
|
情况完全一样 |
这里确实有点问题,但还需要细看下。。等后面我改进后 你再试试 |
我稍微改了下,你切到 remote 分支先试试 #2507 xmake update -s github:xmake-io/xmake#remote |
windows client log:
linux server log:
问题还是存在,现象如上日志 |
我在 test 分支加了点调试 log。。你两端都更新到 test 在完整给我一份 log xmake update -s github:xmake-io/xmake#test |
windows client log:
linux server log:
|
有点怪,看 logs,cmd执行完, client 端已经退出 stdin 获取了,并且已经发了 send end 告诉 server 端退出 write_pipe xmake/xmake/modules/private/service/remote_build/client.lua Lines 520 to 524 in 7b4adab
按理,你这之后的回车,应该不会再响应什么了。。 而且 server 端还是没能收到 client 过来的 send end msg,还一直卡着 write_pipe 没退出 xmake/xmake/modules/private/service/remote_build/server_session.lua Lines 278 to 284 in 7b4adab
要不你自己在那边多加点 logs 调下?我这也看不出啥 |
嗯,我今晚抽个时间调下看看 |
server 端 runcmd 退出后,回去 send end xmake/xmake/modules/private/service/remote_build/server_session.lua Lines 335 to 338 in 7b4adab
但是 client 这里似乎没收到。。 xmake/xmake/modules/private/service/remote_build/client.lua Lines 300 to 303 in 7b4adab
|
应该就是 io.readable() 的问题,这个可能跟终端有关。。
windows 目前的实现,可能只对原生 cmd / ps 有效,之前也只在这两上测试过,msys2 啥的 没怎么测过 |
刚测试了下 msys2 下,确实一直返回 true ,即使没有输入 |
xmake/core/src/xmake/io/iscygpty.c Line 131 in 3f13167
io.readable 的实现本身没问题,支持 msys2 这里搞出来的问题,msys2 下 ,会额外对 stdin 调用这个,来判断是否为 cygwin/msys 终端,调用完这个 io.readable 就一直是 true 了。。 而 cygwin/msys 下,stdin 其实是 pipe,调用这个接口取 pipe name 时候,可能触发了 stdin events,但是一直没 reset ,永远是 readable 状态了,比较怪,暂时还没好的解决办法 |
我刚 remote 分支 对 stdin 避免调用 isatty ,暂时绕过了刚的问题。。 不过现在还有另外一个问题,目前 io.readable 的实现确实也不支持 msys2 ,修复刚的问题后,现在即使有输入,io.readable 总是返回 false,也没完全生效。。 |
看了下,目前对 io.readable 的实现方案,都是针对 cmd/ps 的,msys2/cygwin 的目前没找到替代方案。。 |
是比较恶心,还是算了 = = |
😂 |
目前只能对 msys2/cygwin 下 client 端远程编译,暂时禁用stdin输入了,然后给个警告提示用户切到 cmd/ps 上去,至少能保证 msys2 正常命令还是能远程执行,并且正常退出,顶多自己追加 -y ,提前自动完成 stdin 输入 |
🙈 |
我改了下,你再更新到 remote 分支试试,至少 msys2 下能够正常跑了,只要不涉及 stdin 输入。。另外我加了 warning tips |
相关改动已经 merge 到 dev,这里我先关了,应该可以,如有问题再开。。 io.readable 相关问题,我单独开了个 issue,后续有其他更好的方案改进,可以到 #2519 反馈。 |
Xmake 版本
v2.6.8+dev.98baab9
操作系统版本和架构
Linux: 5.15.24-amd64-desktop
windows: windows 10 专业版 19044.1706
描述问题
PowerShell 上远程编译没问题,mingw64 bash 上远程 Linux 编译会导致 linux server 端异常断言
windows client log:
linux server log:
期待的结果
mingw64 环境的远程编译不会导致 Linux server 异常崩溃
工程配置
No response
附加信息和错误日志
No response
The text was updated successfully, but these errors were encountered: