If dbus-launch is started with --exit-with-session, it babysits dbus-daemon. If you kill dbus-launch, it kills dbus-daemon. But if you kill dbus-daemon, dbus-launch doesn't realise it (since it doesn't get a SIGCHLD) and doesn't exit. A simple solution is to keep open a pipe between the two processes. When dbus-daemon exits, the pipe will generate a SIGPIPE and dbus-launch can exit upon select(2).
Slightly better summary, stolen from Bug #28556
*** Bug 28556 has been marked as a duplicate of this bug. ***
This is complicated by the fact that dbus-daemon daemonizes, closing all extra file descriptors... One nice way that dbus-launch could detect a dbus-daemon crash would be to connect to dbus-daemon itself, using D-Bus. I hear that's a reasonable IPC mechanism these days :-)
*** This bug has been marked as a duplicate of bug 69877 ***
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.