I've done some investigating of this, and this is what I think is happening:
- When seahorse-agent starts, various exit handlers are registered with atexit(). These handlers are registered in the following order: seahorse_agent_exit() [seahorse-plugins/agent/seahorse-agent.c], shutdown_orb() [orbit2/src/orb/orb-core/corba-orb.c], global_client_free() [seahorse-plugins/libseahorse/seahorse-gconf.c] - When the X connection dies, exit() is called, which causes the exit handlers to be called in reverse order. - global_client_free() free's the global GConfClient in seahorse-plugins/libseahorse/seahorse-gconf.c - shutdown_orb() closes the socket - seahorse_agent_exit() removes some gconf notifies. However, because the global GConfClient was free'd earlier, a new one is created in get_global_client(). In addition to this, gconf_client_add_dir() is invoked again (which happened already when seahorse-agent originally started). Normally, this would trigger a call to CORBA_ORB_init(), which would undo what happened in shutdown_orb(). However, because gconf thinks it is already initialized (check out gconf_get_config_listener in gconf.c - the ConfigListener "listener" already exists), this doesn't get called again, leading to the assertion later on -- seahorse-agent assert failure: ERROR:iop-profiles.c:606:IOP_generate_profiles: assertion failed: (obj && (obj->profile_list == NULL) && obj->orb) https://bugs.launchpad.net/bugs/429322 You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. -- ubuntu-bugs mailing list [email protected] https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs
