After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 567840 - GIMP's GtkScaleButton conflicts with GTK's
GIMP's GtkScaleButton conflicts with GTK's
Status: RESOLVED FIXED
Product: GIMP
Classification: Other
Component: User Interface
git master
Other All
: Normal normal
: 2.6
Assigned To: GIMP Bugs
GIMP Bugs
Depends on:
Blocks:
 
 
Reported: 2009-01-15 10:39 UTC by Christian Hammond
Modified: 2009-02-12 18:22 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Christian Hammond 2009-01-15 10:39:54 UTC
While developing a GTK+ module that makes use pygtk, we discovered that Gimp's bundled GtkScaleButton conflicts with GTK+'s, causing some pretty nasty deadlocks.

Essentially what happens is that while initializing pygtk (or making use of GtkScaleButton at all in the module), a GType is registered with the name "GtkScaleButton". Then, while Gimp is loading, it attempts to create its own bundled GtkScaleButton, reusing the same GType name. This errors out, and in the end, causes a deadlock inside the GOnce code in gimp_gtk_scale_button_get_type().

The reverse appears to be true. If we delay any access to pygtk or a GtkScaleButton creation until well after Gimp is loaded, we hit the same issue, but in GTK's gtk_scale_button_get_type().

It seems that setting GimpGtkScaleButton as the GType name in app/widgets/gtkscalebutton.c would fix this.
Comment 1 Michael Natterer 2009-01-23 16:22:26 UTC
Eek, I didn't think of gtk modules when copying this. Obviously making
sure that nothing in GIMP uses a real GtkScaleButton is not enough.

Will look into this asap.
Comment 2 Michael Natterer 2009-02-12 18:22:01 UTC
Fixed in both branches:

2009-02-12  Michael Natterer  <mitch@gimp.org>

	Bug 567840 – GIMP's GtkScaleButton conflicts with GTK's

	* app/widgets/gtkscalebutton.c: rename the type to
	"GimpGtkScaleButton" so we don't crash if the real
	GtkScaleButton type is registered too.