RHEL 中的“sock_sendmsg-error 22”错误

RHEL 中的“sock_sendmsg-error 22”错误

我正在使用 RHEL 5.10 服务器(它们在集群中使用一些共享服务)。当我使用“init 6”或“rebo​​ot”重新启动它们时,服务器在关闭时挂起,并不断显示以下消息:

sock_sendmsg-error 22

我必须进入 ilO cli 模式并重置电源,之后服务器才能再次正常重启。之后我没有在 /var/log/messages 中看到任何重大错误。有人能解释一下这个错误是什么意思吗?这是内核级套接字的问题吗?

答案1

22将是标准 errno 值。这些是在一系列(许多)以 errno.h 开头的 C 语言包含头文件中定义的。我发现查找这些的最简单方法是使用诸如 之类的工具cscope。无论如何,在大多数 Linux 机器上, 22 是与 相对应的值EINVAL,它具有“无效参数”的标准呈现。

#define EINVAL          22      /* Invalid argument */
"/usr/include/asm-generic/errno-base.h"

由于我们知道这与系统调用有关sendmsg,因此我们可以查阅 sendmsg(2) 的手册页,它只是告诉我们传递给它的参数无效,可能是因为某些东西没有妥善处理错误。这也可能来自其他错误,例如当命令mount正在挂载 CIFS 网络共享时,出现诸如凭据无效之类的错误。在这种情况下,真正的错误可能位于内核日志 ( dmesg) 中。

不过我不确定哪个系统组件会报告该错误。希望您也能在日志中看到它?

相关内容