关于 dbus 消息合法性的边界情况

Reading Time: 2 minutes 引言 最近项目上遇到了一个现象很奇妙的 bug, 一个提供 dbus 服务的 daemon 被不断地被 dbus-daemon 重启, 并且不断启动失败. 观察启动失败的日志, 发现其启动失败是因为有部份应该由该 daemon 独占的 资源/名字 已经被其他进程占领了. 而我们在观察到该 daemon 不断重启的同时, 如果我们 killall 之后手动起一个, 这个被我们手动启动的 daemon 可以正常被启动. 但是之后 dbus-daemon 还会重新尝试拉起新的实例. 最终定位到是因为该 daemon 意外地向 dbus 发送了一个非法的消息. 而根据 dbus-specificati…