从bug看DDE底层 dbus

使用service networking restart命令重启网络后,桌面环境崩溃 


整个主题都挂了。。。。。。  还有托盘的电源等等。。。
深度截图也挂了,不能启动


这个是由于system-dbus没有了导致的(networking其实是upstart )
大家测试的时候可以使用这个命令
sudo /etc/init.d/networking restart; sudo /etc/init.d/dbus start
前一条会使system dbus消失,  后一条会打开system dbus(使状态恢复正常)
现在测试的情况是
软件中心, 深度音乐, 桌面, 托盘(网络,账户) 会挂
其中最惨的是软件中心,  挂了后即使按照我上面提供的这种修复方式也没法再次开启
原因没有继续查看.
请相关人员查询自己代码部分.     特别是c绑定的东西.


大家先不要动
感觉是gio中 GDBusProxy 的bug,  在dbus-daemo挂了之后,如果用了这个类的就会挂
不过python中用的dbus好像是glib-dbus的绑定吧?
desktop挂的原因应该是glib的bug,我先跟踪跟踪


原因找到了,

一般dbus的封装库都会在bus_connection消失的时候主动把程序给干掉.

主要用在session bus上, 一个会话结束的时候,方便结束当前程序.

所以在system bus挂掉的时候, 任何使用dbus高级库的程序都可能被自己干掉.

桌面程序考虑到实际情况(桌面会自己跟随session bus而自动退出) 所以对

system dbus 应用了g_dbus_connection_set_exit_on_close调用,阻止desktop退出.

 这个应该属于系统组的bug了,  networking重启导致system bus挂掉

原文地址:https://www.cnblogs.com/bbsno1/p/3262912.html