Opened 10 years ago

Closed 10 years ago

#43346 closed defect (fixed)

glib2 @2.40.0 issues a "Got weird mach timebase info" error when running Inkscape 0.48.4 r9939

Reported by: udbraumann Owned by: ryandesign (Ryan Carsten Schmidt)
Priority: Normal Milestone:
Component: ports Version: 2.2.1
Keywords: leopard ppc Cc:
Port: glib2

Description

I managed to smoothly install my beloved inkscape on a 10.5.8. PPC.

However, during the startup of the GUI it crashes, probably due to a problem with glib2:

$ inkscape

(inkscape:99961): GLib-GObject-WARNING **: gvalue.c:181: cannot initialize GValue with type 'guint', the value has already been initialized as '-g-type-private--IFaceHolder'

(inkscape:99961): GLib-GObject-WARNING **: unable to set property 'digits' of type 'guint' from value of type 'guint'

(inkscape:99961): GLib-ERROR **: Got weird mach timebase info of 1000000000/33329426.  Please file a bug against GLib.
Trace/BPT trap

Any hints or ideas?

Attachments (2)

inkscape_2014-04-13-142737_Macintosh-2.crash (26.9 KB) - added by udbraumann 10 years ago.
corresponding crash report found under ~/Library/Logs/CrashReporter
patch-glib-gmain-c.diff (2.3 KB) - added by ccorn@… 10 years ago.
Patch to get g_get_monotonic_time working on MACH/PPC

Download all attachments as: .zip

Change History (8)

Changed 10 years ago by udbraumann

corresponding crash report found under ~/Library/Logs/CrashReporter

comment:1 Changed 10 years ago by ryandesign (Ryan Carsten Schmidt)

Cc: ryandesign@… removed
Owner: changed from macports-tickets@… to ryandesign@…

I don't know. I would file a bug against GLib, like it says.

comment:2 Changed 10 years ago by ccorn@…

The cause is in glib/gmain.c in function g_get_monotonic_time(). When called for the first time, the function sets timebase_info which is a fraction giving the mach tick period in nanoseconds. That value is divided by 1000 to give microseconds. The current code requires the resulting fraction to be representable as 1/denominator because the author did not feel the need for risking integer overflows when multiplying. However, on PPC a representation as 1/denominator would not be exact, and the code errs out. I have replaced the code with a long double computation that should be accurate enough. I do not mind whether that's faster or slower than the previous 64-bit integer division. Feel free to try it for the time being until a proper fix is provided upstream.

Changed 10 years ago by ccorn@…

Attachment: patch-glib-gmain-c.diff added

Patch to get g_get_monotonic_time working on MACH/PPC

comment:3 in reply to:  2 Changed 10 years ago by udbraumann

Replying to ccorn@…:

The cause is in glib/gmain.c in function g_get_monotonic_time(). ...

Meanwhile a substantial debate on this issue has been started upstream: https://bugzilla.gnome.org/show_bug.cgi?id=728123 As it appears, the problem not only occurs for PowerPC processors, but also for ARMs. Moreover, it is being speculated that the problem (mach_timebase_info_data_t should be capable to also carry non-1/1 numerator/denominator ratios, such as 1000000000/33329426) might affect future Intel Macs.

https://bug728123.bugzilla-attachments.gnome.org/attachment.cgi?id=274897 proposes a reasonable patch for glib/gmain.c, but still the glib2 developer seem to hesitate to adopt it.

comment:4 Changed 10 years ago by josephsacco

This bug also rears its ugly head when building gstreamer1 @1.24 on a PPC running OS X 10.5.8. Rebuilding glib2 with patch-glib-gmain-c.diff resolves the problem.

Good work!!!

-Joseph

comment:5 in reply to:  4 Changed 10 years ago by udbraumann

Could successfully apply a patch proposed upstream under https://bug728123.bugzilla-attachments.gnome.org/attachment.cgi?id=275596

comment:6 Changed 10 years ago by ryandesign (Ryan Carsten Schmidt)

Resolution: fixed
Status: newclosed
Note: See TracTickets for help on using tickets.