关于1003僵尸进程的问题
Tofloor
poster avatar
花心胡萝卜
deepin
2020-10-23 04:04
Author
首先声明, 我说的不一定是正确的...因为我的golang半吊子水平....

初步排查了一下,  在launchWaitAux函数里, 调用了 exec.Command(program, args...), 然后通过各种回调进来的endFn, 在有异常的情况下, 貌似没有对cmd进行Wait导致了僵尸进程...不知道价格defer能不能解决问题哈...

不得不说, 这golang写的,,,,这回调函数嵌套的, 我个人感觉都赶上js的循环闭包回调了...

我看了一下日志, 找到个这个错误:


  1. startmanager.go:665: [/bin/sh -c export GIO_LAUNCHED_DESKTOP_FILE_PID=$;exec /usr/bin/cgexec -g memory,freezer,blkio:18@dde/uiapps/40 dde-top-panel]: signal: terminated
Copy the Code
我亲自执行了一下, 确实失败了, 手动执行报错:

  1. GIO_LAUNCHED_DESKTOP_FILE_PID=$; /usr/bin/cgexec -g memory,freezer,blkio:18@dde/uiapps/40 dde-top-panel
  2. cgroup change of group failed
Copy the Code
我本身对cgexec没什么研究, 看了一些文章也是一知半解, 只能感觉这个命令十分的奇怪..

搜了一下changelog, 发现这个功能其实很早就有了, 我猜, 有僵尸进程的, 能稳定重新啊的, 大概率都装了dde-top-panel, 这也能说明为毛官方说不稳定重现, 而社区反应的都是稳定重现, 当然这结论也不一定对,,,

不知道这两者有什么冲突.

我能力有限, 只能排查到这里了, 我还发现我的顶栏总是莫名退出, 可能跟startdde限制内存有关系, 也侧面说明了顶栏程序有内存泄露的可能, 当然也可能是某些插件导致的 https://bbs.deepin.org/user/229957  小哥你抽空可以检查一下是不是有内存泄露.

https://bbs.deepin.org/user/48640 我只能分析到这里, 其他的让开发来吧. 我个人感觉十有七八是在exec.Command上出的毛病, 价格defer试试水先...





Reply Favorite View the author
All Replies
jingle
deepin
2020-10-23 04:58
#1
差不多定位到了startdde问题
Reply View the author
septemberhx
deepin
2020-10-23 05:19
#2
我估摸着还是有内存泄漏的地方的,之前专门查过一次内存泄漏,不过当时只解决了几个最严重的问题,然后使用一段时间后内存增加的并不多,所以就一直没在处理。
后面我在查一查看看哪里还可能泄漏。
Reply View the author