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 582878 - [GstClock] ABI breakage in GIT on x86
[GstClock] ABI breakage in GIT on x86
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gstreamer (core)
git master
Other Linux
: Normal blocker
: 0.10.24
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2009-05-16 17:20 UTC by Sebastian Dröge (slomo)
Modified: 2009-05-17 08:48 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Sebastian Dröge (slomo) 2009-05-16 17:20:35 UTC
Hi,
at some point in the past few days the struct size of GstClock has changed, but only on x86 and not on x86-64:

Running suite(s): GstABI
sizeof(GstClock) is 168, expected 172
sizeof(GstSystemClock) is 192, expected 196
0%: Checks: 1, Failures: 1, Errors: 0
gstcheck.c:504:F:size check:test_ABI:0: failed ABI check
FAIL: gst/gstabi

Running suite(s): LibsABI
sizeof(GstNetClientClock) is 244, expected 248
0%: Checks: 1, Failures: 1, Errors: 0
gstcheck.c:504:F:size check:test_ABI:0: failed ABI check
FAIL: libs/libsabi
Comment 1 Sebastian Dröge (slomo) 2009-05-16 17:23:34 UTC
http://cgit.freedesktop.org/gstreamer/gstreamer/diff/gst/gstclock.h?id=bb8f296d45721629c97f5283e08077829de6c206

This is the problem... 64 bit padding are removed and a pointer is added... giving a diff of 32 bits on 32 bit architectures. This is probably best fixed by using a union:

union {
  GstClockPrivate *priv;
  GstClockTime _gst_reserved[GST_PADDING];
} ABI;
Comment 2 Sebastian Dröge (slomo) 2009-05-17 08:48:12 UTC
commit 44ea1ac6b41bbb91401cf6c7c1dfbb7bf0ea7290
Author: Sebastian Dröge <sebastian.droege@collabora.co.uk>
Date:   Sun May 17 10:46:39 2009 +0200

    gstclock: Fix ABI breakage on 32 bit architectures
    
    The padding of GstClock is a GstClockTime and not a
    gpointer, so adding a pointer requires the padding
    size to be changed depending on the pointer size.
    Use an union instead.
    
    Fixes bug #582878.