【问题标题】:sh: error while loading shared libraries: libc.so.6: cannot open shared object file: Error 24sh:加载共享库时出错:libc.so.6:无法打开共享对象文件:错误 24
【发布时间】:2011-10-24 13:53:25
【问题描述】:

我有一个在 Linux 上运行的 C 应用程序,它处理数千条消息……但几分钟后我运行该应用程序时却没有,它会引发以下错误:

sh:加载共享库时出错:libc.so.6:无法打开共享对象文件:错误 24

应用程序每秒处理大约 30 条消息,可能是文件打开句柄问题?

STDOUT 接收:“进程 19374 收到信号 11”

有什么想法吗?

感谢您的帮助;-)

林顿

【问题讨论】:

  • 信号 11 表示分段错误。尝试使用调试器,例如gdb(“man gdb”寻求帮助)。不确定 libc 错误。应用程序启动了多少进程?进程 19374 是子进程吗?您能否列出应用程序崩溃前后运行的进程(“ps aux | grep ”)?错误消息的顺序是什么(在“进程 19374 收到信号 11”之前出现“无法打开共享对象文件”?)
  • 确保您没有泄漏文件描述符。 lsof -p <PID> 可以告诉你你打开了什么。

标签: c


【解决方案1】:

Errno 24 表示:“打开的文件太多”。 经过一番思考,我认为应用程序打开了一个文件,系统不再允许这样做。应用程序无法正确处理这种情况,并因分段错误而崩溃。 “open”系统调用的返回值是否在所有地方都正确检查?

【讨论】:

    【解决方案2】:

    为了处理这种情况,我找到了两种解决方法。要么处理相同的分配文件描述符编号,要么在他们的工作完成后关闭 FD。

    【讨论】:

      猜你喜欢
      • 2021-05-01
      • 1970-01-01
      • 2016-05-11
      • 1970-01-01
      • 2018-12-17
      • 1970-01-01
      • 2013-06-11
      • 2019-05-31
      • 1970-01-01
      相关资源
      最近更新 更多