什么原因可能导致各种应用程序中出现“中断系统调用”错误?

什么原因可能导致各种应用程序中出现“中断系统调用”错误?

我在 MacBook Pro(Intel,2020,MacOS 11.1)上遇到了一些非常奇怪的问题。各种命令都失败了,但不一致。运行相同的命令两次会导致不同的结果。

针对我的本地 Postgres 服务器(在 Postgres.app 中运行)的查询经常失败(但并非总是如此),并出现如下所示的错误postgresql.log

DETAIL:  Could not open file "pg_clog/0000": Interrupted system call.
ERROR:  checkpoint request failed
HINT:  Consult recent messages in the server log for details.

无法打开的特定文件各不相同;有时是例如global/2671或类似的。我猜这些只是 Postgres 使用的内部文件。

当针对同一个数据库运行 Rails 应用程序测试套件时,有时个别测试会失败,有时测试命令会失败,就像我在完成整个测试套件之前所做的那样:

<Thread:0x00007f8be1319808@/Users/tao/.rbenv/versions/2.6.6/lib/ruby/2.6.0/open3.rb:287 run> terminated with exception (report_on_exception is true):
Traceback (most recent call last):
    1: from /Users/tao/.rbenv/versions/2.6.6/lib/ruby/2.6.0/open3.rb:287:in `block (2 levels) in capture3'
/Users/tao/.rbenv/versions/2.6.6/lib/ruby/2.6.0/open3.rb:287:in `read': stream closed in another thread (IOError)
#<Thread:0x00007f8be13193a8@/Users/tao/.rbenv/versions/2.6.6/lib/ruby/2.6.0/open3.rb:288 run> terminated with exception (report_on_exception is true):
Traceback (most recent call last):
    1: from /Users/tao/.rbenv/versions/2.6.6/lib/ruby/2.6.0/open3.rb:288:in `block (2 levels) in capture3'
/Users/tao/.rbenv/versions/2.6.6/lib/ruby/2.6.0/open3.rb:288:in `read': stream closed in another thread (IOError)
Interrupted. Exiting...

Finished in 188.009977s, 3.2445 runs/s, 8.5315 assertions/s.
610 runs, 1604 assertions, 0 failures, 0 errors, 0 skips

当我尝试使用 安装 Ruby 版本时,也出现了类似的问题rbenvinterrupted system call这些错误中出现了相同的文本。

在 Mac OS 的恢复模式下运行磁盘急救没有解决任何问题,重新安装 Postgres 也没有解决任何问题。在全新安装 Mac OS 后,测试套件通过了一两次,然后才开始出现相同的问题。Apple 支持建议重置 SMC,但无济于事。

我怀疑是硬件问题,但是苹果诊断没有发现任何问题,memtester 也没有。我有点不知道下一步该做什么来调试这个问题。这些问题是否与硬件故障一致?我下一步该怎么做才能找到根本原因?

答案1

这是由 Avast 防病毒软件引起的。

Big Sur 中的多个应用都存在此问题。请参阅这个 GitHub 问题此 Hacker News 帖子进行更多讨论。简而言之:

该问题似乎是由 Big Sur 中的一些新安全 API 引起的。Apple 显然已经开始从一些以前从未返回过此错误的系统调用中返回 errno=EINTR。

相关内容