我们正在开发一个嵌入式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