linux进程状态 DW,c – 诊断进程陷入D状态(不间断睡眠/阻塞IO) – SO中文参考 – www.soinside.com…

  • Post author:
  • Post category:linux


我们正在开发一个嵌入式Linux系统,使用Live555 WIS-Streamer通过网络在RTSP上传输视频。

在一个特定的系统中,我们看到WIS-Streamer卡在TASK_UNINTERRUPTIBLE状态;从命令行:进程的ps状态显示为DW,WIS进程的子进程都列为Zombie状态。

一旦我们处于这种状态,看起来我们无能为力,除了重启(不可取)。然而,我们真的很想找到这个的根本原因 – 我怀疑在流光内它挂在阻塞的send电话或某些东西上。有什么我们可以做的,无论是在代码中还是通过命令行等来尝试缩小被阻止的内容?

作为一个例子,我已经尝试查看netstat(netstat -alp)的输出,看看是否有悬挂的套接字附加到阻塞/僵尸线程的PID,但无济于事。

更新更多信息:

它并没有颠覆CPU,top将阻塞和僵尸线程列为0%mem / 0%CPU / VSZ 0。

我尝试过关于系统的其他事情:

/ proc / status / for main&child threads 546是父级,被阻止:

$> cat /proc/546/stat

Name: wis-streamer

State: D (disk sleep)

Tgid: 546

Pid: 546

PPid: 1

TracerPid: 0

Uid: 0 0 0 0

Gid: 0 0 0 0

FDSize: 0

Groups:

Threads: 1

SigQ: 17/353

SigP