在WSL1中启动ssh服务, 然后客户端ssh过来运行emacs, 拷贝文本会卡死

之前一直ssh远程到一台普通linux系统中进行开发, 最近两天测试将远程linux系统换成windows, 然后在上面启动WSL1, 并在WSL1中启动ssh服务, 准备用它替代之前的普通linux系统

初步测试ok, ssh过去运行shell和emacs都正常, 不过刚刚emacs遇到一个奇怪的问题: 复制(带颜色的)文本会卡死, 百分百重现. 重现后C-g不会恢复, 两次C-g后窗口黑屏.

同样的场景, 用同样的客户机ssh到之前普通linux系统不会出现, 而且直接在远程机上的WSL1中运行emacs也不会出现,

WSL1里的ssh服务有什么不同的地方吗?

这种问题该怎么排查呢?

---- 补充1: 尝试将interprogram-cut-function设置为nil, 依然会卡死

— 补充2: 发现clipetty(GitHub - spudlyo/clipetty: Manipulate the system (clip)board with (e)macs from a (tty))这个包受影响, 日常使用的这个命令clipetty-kill-ring-save 也会卡死

是终端还是x11?

是终端, 上面所有情况都不涉及x11

带色彩的文本信息量巨大,是哪个地方缓存不够,还是哪个函数的循环有问题?

诊断方法:

  1. M-x profiler-start RET cpu RET
  2. 拷贝文本,Emacs 卡死。
  3. 另开一个终端 ssh 到 WSL,并运行 pkill -SIGUSR2 -i emacs
  4. Emacs 应该退出了卡死状态。
  5. M-x profiler-report,看看卡在哪个函数。

按照这些步骤, 使用如下方法重现:

— 补充2: 发现clipetty(GitHub - spudlyo/clipetty: Manipulate the system (clip)board with (e)macs from a (tty) 1)这个包受影响, 日常使用的这个命令clipetty-kill-ring-save 也会卡死

卡死后, 运行pkill -SIGUSR2 -i emacs, Emacs并不会退出卡死状态

怀疑可能跟WSL1的pseudo terminal实现有关, 比如挂在pseudo terminal了, 而不是emacs?