der*_*ert 4 linux debian xterm x11 kwin
理论上,按下关闭按钮
应该关闭一个 xterm。在我做一个aptitude upgrade. (我正在运行 Debian 测试)。但现在它没有了——单击 X 没有任何作用——但仅适用于某些xterm。
特别是,如果我从 KDE 快速启动项或 K 菜单启动 xterm,则这些 xterm 是可关闭的。但是,如果我从键盘快捷键 (khotkeys) 启动它,则该 xterm 不可关闭。
此外,这是递归的:如果我从 xterm 启动一个 xterm,如果它的父项是,它是可关闭的。
这一般不会发生。它仅适用于 xterm。我已经测试过从不可关闭的 xterm 启动这些应用程序,它们都是可关闭的:
在那里穿插另一个程序会破坏链条(例如,从 konsole 启动一个 xterm):
我检查了我的 kwin 窗口规则,我没有任何用于 xterm 的规则。
Stephen Dowdy 回应了 Debian 错误报告,并表示这可能是 nVidia 错误。它破坏信号掩码的地方。一些搜索发现Debian Bug #728743,并且确实切换到 Nouveau/MESA(开源驱动程序)已经解决了这个问题。
请注意,降级到较旧的 nVidia 驱动程序并没有,这可能意味着它的 nVidia 驱动程序 + 其他东西的一些较新版本,我没有费心去追踪该错误的评论者声称它已在 331.38 中修复。(我现在正在运行 331.49,它确实已修复)。
我在两个版本上都运行了 strace。经过一些过滤(使 diff 更好地工作),我看到了一堆类似的行:
WORKING rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
*vs*
BROKEN rt_sigprocmask(SIG_BLOCK, NULL, [HUP], 8) = 0
Run Code Online (Sandbox Code Playgroud)
似乎损坏的版本已阻止 SIGHUP。单击 X 似乎发送一个 SIGHUP,它被忽略,因此 shell 不会退出。您可以通过在 shell 中捕获 SIGHUP 而不退出(但不是相反,因为 shell 似乎永远不会获得 HUP)来使工作中断。
我已经提交了关于这个的Debian 错误 #733816。
作为一种解决方法,您可以使用这个简单的 C 程序包装热键命令:
WORKING rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
*vs*
BROKEN rt_sigprocmask(SIG_BLOCK, NULL, [HUP], 8) = 0
Run Code Online (Sandbox Code Playgroud)
通过编译(例如, to ~/bin/unblock-hup)然后调用~/bin/unblock-hup xterm而不是xterm. 请注意,在自定义快捷方式控制模块中,您必须将完整路径放在您的主目录中;~不起作用。
| 归档时间: |
|
| 查看次数: |
344 次 |
| 最近记录: |