Re: GTypeModule and threads
- From: Tim-Philipp Müller <t i m zen co uk>
- To: gtk-devel-list gnome org
- Subject: Re: GTypeModule and threads
- Date: Tue, 16 Jun 2009 12:35:38 +0100
On Tue, 2009-06-16 at 11:52 +0200, Jannis Pohlmann wrote:
> I played with this a bit more and it seems it's not related to
> GTypeModule all. Even if I make the GModule resident and never unuse
> the GTypeModule, I still end up with this error. So the question is, is
> GType or at least g_object_new() thread-safe? Or if it's not, shouldn't
> it be?
For what it's worth, GStreamer uses GType/GObject in a heavily
multithreaded context fairly successfully, so it should generally work
just fine as long as you're aware of a few things:
- you need to make sure your _get_type() functions are thread-safe
(via g_once_init_enter/leave() or somesuch)
- g_object_notify() and by extension g_object_set() are not
thread-safe (yet) and bad things will happen if they are
concurrently used on the same object+property. A fairly
straight-forward patch for this issue is available in
bugzilla [1], but is sadly still waiting for review.
- you need to do locking internally in your object
implementation as needed (e.g. for properties etc.)
(hope I didn't forget anything)
> Excerpt of the backtrace of the above error:
>
> #3 0xb7ec0f17 in g_assertion_message ()
> #4 0xb7ec14dd in g_assertion_message_expr ()
> #5 0xb7f6458f in g_type_class_ref ()
> #6 0xb7f49268 in g_object_newv ()
> #7 0xb7f497b1 in g_object_new_valist ()
> #8 0xb7f49920 in g_object_new ()
>
> Any help would be greatly appreciated. Seems like I can reduce the risk
> of this error to appear by protecting parts of my code with mutexes but
> that still isn't 100% safe and it looks to me like this might be a bug
> in GObject/GType.
This looks a lot like the infamous bug #64764, which was fixed quite
some time ago, however. What GLib version are you using? I think the fix
made it into 2.16. If this is in fact the same issue, you can work
around it by doing a g_type_class_ref(type) at the beginning of your
code.
Cheers
-Tim
[1] http://bugzilla.gnome.org/show_bug.cgi?id=166020#c61
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]