Note that the problem only occurs with "--exit-with-session": This invocation is fine:

killall dbus-launch &>/dev/null
eval `dbus-launch --auto-syntax`

Problem appears to be related to function tools/dbus-launch.c:kill_bus_when_session_ends() which is calling select(2) followed by read(2) in an infinite loop (until the shell exits) for all input the user types.

The same problem affects me also (I login to remote server via ssh with X11 forwarding).
The real problem is that dbus-launch is "eating" chars from stdin (tty) while waiting for SIGHUP.
I don't understand what for it's reading stdin while waiting for SIGHUP...
Below is a smple code:
------------
if (tty_fd >= 0)
{
if (FD_ISSET (tty_fd, &read_set))
{
int bytes_read;
char discard[512];