【问题标题】:Emacs 23.1.50.1 hangs ramdomly for 6-8 seconds on Windows XPEmacs 23.1.50.1 在 Windows XP 上随机挂起 6-8 秒
【发布时间】:2011-01-01 17:09:46
【问题描述】:

我的 Windows XP 机器上有 EmacsW32 23.1.50.1 emacs。它随机挂起 5 到 8 秒,非常令人沮丧。

谁有解决办法?

我什至尝试使用来自 gnu ftp 站点的 emacs win32 二进制文件 (23.1),但它也会挂起几秒钟。

这里有一些值得注意的 processmonitor 日志

10:56:59.9888359 PM CreateFile C:\usr\spool\mail\ PATH NOT FOUND 所需访问权限:读取数据/列表目录、同步、处置:打开, Options: Directory, Synchronous IO Non-Alert, Attributes: n/a, ShareMode: Read, Write, AllocationSize: n/a

10:57:55.5073038 PM QueryAllInformationFile C:\emacs.emacs.d\auto-save-list BUFFER OVERFLOW 创建时间:8/27/2009 12:51 :26 PM, LastAccessTime: 1/5/2010 10:54:40 PM, LastWriteTime: 1/5/2010 10:08:15 PM, ChangeTime: 1/5/2010 10:08:15 PM, FileAttributes: D, AllocationSize: 0, EndOfFile: 0, NumberOfLinks: 1, DeletePending: False, Directory: True, IndexNumber: 0x1000000001f702, EaSize: 0, Access: Read Attributes, Synchronize, Position: 0, Mode: Synchronous IO Non-Alert, AlignmentRequirement: Word

【问题讨论】:

  • 是 Emacs 挂起(无响应),还是 CPU 忙于做其他事情?
  • 我在我的 Windows XP 机器上安装了 GNU Emacs 23.1.1 (i386-mingw-nt5.1.2600)。我没有这样的问题。我会避免升级到你的版本!
  • 您的 .emacs 或其他初始化文件中是否正在进行任何自定义?
  • @OtherMichael,好像 CPU 很忙。我可以在 6 秒后打字。但是挂起经常发生。 @Tim Hoolihan,我没有对我的 .emac 文件进行任何修改
  • 什么时候挂起?您是否在挂起时尝试​​过 C-g 以查看它正在执行的操作是否可中断?在我提出答案之前,还需要一些详细信息。

标签: windows emacs installation


【解决方案1】:

我在 WinXP 上使用 EmacsW32 23.1.50 时遇到了完全相同的问题。我所做的一项有显着改进的更改(无论如何对我来说)是将以下内容添加到我的.emacs 文件中:

; try to improve slow performance on windows.
(setq w32-get-true-file-attributes nil)

似乎这个变量最近被更改为默认为“true”,并且已知会导致一些文件访问速度变慢的问题。我仍然时不时会遇到一些随机挂起(可能是由于我的.emacs 自定义),但现在好多了。

【讨论】:

  • 这有所改善。但是使用 C-X C-F 在 emacs 中打开文件需要将近 15 秒,有时在导航文件时会持续几秒钟。我尝试使用 ido 模式和不使用 ido 模式。同样的问题
  • 感谢一百万 luapyad!!。你节省了我解决问题的时间。文件打开似乎很慢,但我可以忍受。
  • 也为我解决了这个问题。谢谢!
【解决方案2】:

请尝试在“服务”控制面板中停止 Netlogon 服务。这解决了我的问题。请参阅出色的文章http://www.hydrus.org.uk/journal/emacs-netlogon.html,它将我从痛苦中解救出来。

这仅适用于一小部分(但还在增加?)用户:

  • 使用公司问题笔记本电脑
  • 使用 Windows 7
  • 在 R 编辑器中使用 emacs
  • 突然看到她的 emacs 工作很慢

【讨论】:

【解决方案3】:

我遇到了类似的问题,并将其追溯到 Windows 上的网络超时。在我的特殊情况下,这是由于 ido.el,它保留了目录内容的缓存列表。在启动时,ido 试图检查缓存目录,其中包括我的家庭网络和工作网络上的网络共享——无论我在哪个网络上,总是有一些不存在的主机。

因为我的问题源于 ido(有点),我的解决方案是将 ido-max-dir-file-cache 设置为 0(通过自定义变量或 init.el),然后退出 Emacs,删除~ /.emacs.d/.ido.last,然后重新启动 Emacs。根据我在另一个线程中看到的内容,在尝试删除 .ido.last 之前确保所有 Emacs 实例都已关闭非常重要。可能还有其他需要更改的 ido 变量,但到目前为止,此解决方案对我有用。

【讨论】:

  • 顺便说一下,Process Monitor 对解决这个问题非常有帮助。
【解决方案4】:

如果没有一些调试输出,就很难说出导致延迟的原因。

由于延迟通常是由 IO 操作超时引起的,我建议运行 Process Monitor 以查看 Emacs 在挂起时在做什么。

【讨论】:

  • 完全同意。我注意到的一个罪魁祸首是远程文件,通常有各种各样的东西,比如自动恢复、自动保存......
【解决方案5】:

我有 Windows 7,这发生在我身上,因为我使用的是经典 Windows UI,一旦我更改为默认主题,它工作得很好,也许主题服务也与此有关,所以如果你停止它,请尝试运行它。

【讨论】:

  • 这为我节省了数小时的故障排除时间
【解决方案6】:

禁用 global-auto-revert-mode 后,系统执行的 I/O 将大大减少。对我来说,这似乎已经解决了问题。

【讨论】:

  • +1 感谢您的回答!我定期冻结,但在 Linux 上。我们有一个超级慢的 RAID,所以每次去检查文件是否恢复时它一定一直挂着。全局自动还原很好,但它让我几乎无法使用 emacs,但如果没有你的回答,我可能不会弄明白。
【解决方案7】:

这与禁用 netlogon 答案有关。事实证明,关闭 netlogon 给我带来了网络驱动器的问题,所以禁用它很麻烦。发现很长一段时间我把我提供的dns切换到了google的公共dns。事实证明,这在公司领域是一个非常糟糕的主意。我将其切换回自动检测 dns,问题就消失了。

【讨论】:

    猜你喜欢
    • 2011-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-15
    • 2011-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多