当 RStudio 运行时,复制和粘贴在 KVM 虚拟机 (Ubuntu) 中不可用

当 RStudio 运行时,复制和粘贴在 KVM 虚拟机 (Ubuntu) 中不可用

设置:

Fedora 30 带有运行 Ubuntu 18.04.1 的 KVM/qemu 虚拟机。

(这个设置是因为我想在我的 Fedora 30 上运行 RStudio,它只是在 nouveau 图形子系统中的某个地方立即崩溃并死掉——但在 Ubuntu VM 中运行良好)。

问题:

当 RStudio 运行时,在 VM 中复制和粘贴是正确的 PITA。

VM启动后,主机和VM之间的复制粘贴工作正常,VM内部的复制粘贴也工作正常(例如KWrite到KWrite)

在虚拟机中启动 RStudio 后,复制和粘贴最初会继续工作(几次),但很快就会开始“锁定”。这适用于 RStudio 和 KWrite,并且适用于虚拟机内和主机到虚拟机的复制和粘贴。虚拟机中的接收进程冻结并且显然在等待某些事情。但是,虚拟机继续正常执行(例如,您可以使用 shell、运行topiotop

接收进程在 10-30 秒后再次唤醒,此时粘贴的文本可能已收到……也可能未收到。第一次出现问题后,粘贴通常会失败,这包括从虚拟机复制粘贴到主机。在 KWrite 中粘贴始终需要 10 秒,直到光标返回而没有剪贴板内容。 RStudio 的行为更加灾难性,有时杀死进程是唯一的解决方案。

如果将虚拟机放置一段时间,则有机会再次进行一些成功的复制粘贴操作,然后再次发生锁定。

在来宾计算机(而不是在显然不执行任何操作的主机上)重新启动spice-vdagent( systemctl start spice-vdagentd) 会中断锁定,并可能有机会再次执行一些复制粘贴。但这个操作充满了一些风险,因为我在某个时候整个 GUI 都冻结了。

怎么解决?

我应该寻找什么?

xclipboard我在主机上使用过查看剪贴板中发生了什么。没有看到任何意外的情况。

聚苯乙烯

VM 已获得大量 RAM (10GiB),这似乎是必要的,因为即使编织涉及强度图的不太大的编织文件也会导致pandoc内存不足。

当我在其中工作时,RStudio 有时会自行冻结几秒钟,同样不会锁定整个系统。感觉好像交换或垃圾收集正在启动,但 I/O 或 CPU 方面没有任何进展。烦人但还能生存。

答案1

在RStudio社区BB上,提供了以下想法:

设置环境变量RSTUDIO_NO_CLIPBOARD_MONITORING=1

例如:

RSTUDIO_NO_CLIPBOARD_MONITORING=1 /usr/bin/rstudio

其基础是 GitHub 上的错误修复:

允许用户禁用 X11 剪贴板监控

基于这个问题:

RStudio 1.1.419 定期挂起

我们在哪里找到:

看来罪魁祸首可能是 RStudio 过度积极地监听剪贴板的更改。看:

#9 0x00000000005a2745 in rstudio::desktop::GwtCallback::onClipboardChanged(QClipboard::Mode) ()

我们这样做是为了支持全局鼠标选择,但也许这样做过于激进,或者我们正在处理我们应该忽略的剪贴板通知。

执行上述操作可以提高响应时间,但不会提高复制粘贴的可靠性。

相关内容