[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

dbus startup problem when built with eglibc-2.17



Hi,

After building dbus-1.6.12-1 with eglibc-2.17-92 starting dbus-daemon
fails (it was built 80 days ago with eglibc-2.13). The problem is due to
the two statements in dbus/dbus-sysdeps-unix.c:
  *fd_p = socket (domain, type | SOCK_CLOEXEC, protocol);
  cloexec_done = *fd_p >= 0;
  if (*fd_p < 0 && errno == EINVAL)
and
  retval = socketpair(AF_UNIX, SOCK_STREAM|SOCK_CLOEXEC, 0, fds);
  cloexec_done = retval >= 0;
  if (retval < 0 && errno == EINVAL)

Now when SOCK_CLOEXEC is defined in bits/socket.h from 2.16
and hurd/pflocal/pf.c returns EPROTOTYPE not EINVAL problems arise.
The solution is to patch dbus to cover also EPROTYYPE,
  if (*fd_p < 0 && (errno == EINVAL || errno == EPROTOTYPE))
  if (retval < 0 && (errno == EINVAL || errno == EPROTOTYPE))
or to patch pf.c to return EINVAL instead of EPROTOTYPE.

Which way to go?

(see also
eglibc-2.17/debian/patches/hurd-i386/submitted-handle-eprototype.diff
for patches to internal eglibc functions)



Reply to: