任务如何在挂起时“拒绝冻结”?

pie*_*mes 23 kill debian suspend

昨天,当关闭我的笔记本电脑时,它没有立即进入待机模式。根据日志,它正在尝试,但任务拒绝冻结:

Freezing of tasks failed after 20.005 seconds (1 tasks refusing to freeze, wq_busy=0):
Run Code Online (Sandbox Code Playgroud)

这持续了几个小时,直到系统真正暂停。在syslog满像的消息的这个问题,因为systemd一次又一次的尝试。

这怎么会发生?为什么调度程序不能停止调度该应用程序?然后它被有效地冻结了?我读到有多个STOP命令,其中一个很好地询问,其中一个强制冻结。为什么systemd不使用这个或者为什么这在这里不起作用?

Ste*_*itt 32

任务冻结在内核文档中有详细记录。

用户空间进程不能拒绝冻结;它们确实会被冻结,但内核和进程之间的信号由信号处理代码自动处理(冻结使用假信号)。

如果您看到“任务拒绝冻结”消息,则意味着内核线程拒绝冻结,通常是因为它正在执行无法检查点的操作。然而,等待几个小时让内核挂起是不正常的。日志消息中的堆栈跟踪将有助于了解发生了什么问题。