Comment 72 for bug 31037

Revision history for this message
DaveHansen (dave-sr71) wrote :

I think this is connected to avahi, somehow. Everybody's backtraces seem to have avahi_entry_group_free() in them. People also can't kill the process without kill -9, which is consistent with it being inside a signal handler.

I can reproduce this by starting and stopping the vino daemon by clicking the "Allow other users to view your desktop" in the vino-preferences app. It consistently gets vino-server to peg a CPU.

However, if I first stop avahi:

    service avahi-daemon stop

before doing this, I can repeatedly start and stop vino without it pegging a CPU. My naive conclusion from this is that server/vino-mdns.c's call to avahi_entry_group_free() is freezing, spinning and sucking up CPU, but *ONLY* when avahi is running. This happens both when trying to restart the daemon or exit. Here's the vino code. I _think_ this makes it an avahi bug.

static void
vino_mdns_restart (void)
{
  if (mdns_service_name != NULL)
    g_free (mdns_service_name);
  mdns_service_name = NULL;

  if (mdns_entry_group != NULL)
    avahi_entry_group_free (mdns_entry_group);
  mdns_entry_group = NULL;

  if (mdns_client != NULL)
    avahi_client_free (mdns_client);
  mdns_client = NULL;

  vino_mdns_start (iface_name);
}