Re: bug (?) in libbonobo that is breaking evolution



Hi Jon,

	This chunk of code, is designed to get both ends of the X
connection - and worse all the Gtk+ widgets idea of what X resources are
around, and all the destruction signals synchronised on both sides of the
synchronous CORBA connection.

	Unfortunately it seems(?) that gtk_events_pending is always going
to return TRUE if you have an idle handler; so I imagine we'll just block
in there.

	I'd be interested to see a stack trace for the problem; quite what
to do about it is somewhat non-obvious to me.

	Hmm,

		Michael.

On 7 Sep 2001, Jon Trowbridge wrote:
> In the evolution addressbook, we've been plagued by 100%-cpu-sucking
> lock-ups.  I've traced the problem to a race condition in which horrible
> things happen when impl_Bonobo_Control_realize gets called at a
> particularly inopportune time.[1]
>
> We are spinlocking somewhere inside of the gtk_events_pending() call in:
>
> 	if (!control->priv->is_local) {
> 		while (gtk_events_pending ())
> 			gtk_main_iteration ();
> 		gdk_flush ();
> 	}
>
> (this is from bonobo/bonobo-control.c, around line 460)
>
> at the bottom of a long, convoluted stack trace.  If I comment this code
> out, the problem disappears without any obvious adverse effects.
>
> I'm a bit confused by the fact that is_local must be false when this
> happens, since my factory and the embedding app are always both running
> on the same machine.  Is this the meta-bug (i.e.
> bonobo_gtk_widget_from_x11_id is failing to correctly distinguish
> between the local and the remote case), or have I totally misunderstood
> what is going on here?
>
> Any insights are greatly appreciated.
>
> Thanks,
> -JT
>
>
> [1] To be specific, during event processing that occurs inside of a call
>     to bonobo_ref that occurs during a signal emission from inside of
>     an idle function...
>
>
>
>
>
> _______________________________________________
> gnome-components-list mailing list
> gnome-components-list gnome org
> http://mail.gnome.org/mailman/listinfo/gnome-components-list
>

-- 
 mmeeks gnu org  <><, Pseudo Engineer, itinerant idiot





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