WSL上emacs报错Failed select: Invalid argument

我在gnu下载的emacs 27.1和26.3源码包,在win10 wsl ubuntu20.04环境下编译,gcc版本gcc (Ubuntu 9.3.0-10ubuntu2) 9.3.0,执行configure时加入选项--without-x--with-gnutls=ifavailable,make和make install后,执行emacs不停的报错Failed select: Invalid argument,中断正常的组合快捷键操作,请问有人遇到过这个问题么?

有没有对emacs源码比较熟悉的朋友?我只找到在src/process.c里面connect_network_socketwait_reading_process_output这两个函数可能会报这个错误,但具体怎么解决就没有头绪了

就可以试试用gdb跟踪一下,再那两个地方设置一下断点

原则上是emacs调用pselect报错了,但是打印参数也没觉得哪个有问题,nfds和timeout都在正常值范围内

看那段代码都是比较常规的代码,估计是windows和linux的兼容性问题

我看大家用着都没事啊,我就在网上搜到了个几年前在手机上出同样问题的issue,据说25.2就解决了。。

刚刚在wsl ubuntu20.04下编译的emacs27.1 使用参数 --with-all 运行良好 :rofl: :rofl: :rofl:

我在公司和家里的电脑上试了都不行,win10 1909的wsl1

用18.04的ubuntu没有问题,不知道踩到什么坑了。。。

突然发现 emacs-lisp-mode下面就一直出这个错误 Debugger entered–Lisp error: (file-error “Failed select” “Invalid argument”) 看来你这个错误不是唯一的了 :rofl: :rofl: :rofl:

我那个后来用gdb看是调用这个函数里面的地方pselect报的error,但确实没看出来哪个参数错了,后来再18.04没这个问题我就没再继续研究了,两个系统差异有点多,gcc版本也不一样

1 个赞

晕,我也没找到问题所在, :rofl: :rofl: :rofl: 目前发现的只影响到elisp的使用

多次调试发现 gdb 调试时候报错的地方有错。比如换linux系统报错应该在65行结果wsl的gdb 报错在120行,估计wsl的底层实现的时候有问题,所以觉得wsl坑太多了,现在写代码还得换到linux 哎。

公司是在windows下的环境,又由于某种原因不能直接用windows版的emacs,所以选择个wsl想先用着