Package: libsocialweb Version: 0.25.20-6 Usertags: goto-cc During a rebuild of all Debian packages in a clean sid chroot (using cowbuilder and pbuilder) the build failed with the following error. Please note that we use our research compiler tool-chain (using tools from the cbmc package), which permits extended reporting on type inconsistencies at link time.
[...]
libtool: link: gcc -std=gnu99 -I.. -I/usr/include/glib-2.0
-I/usr/lib/x86_64-linux-gnu/glib-2.0/include -pthread
-I/usr/include/libsoup-2.4 -I/usr/include/libxml2 -I/usr/include/glib-2.0
-I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/dbus-1.0
-I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/glib-2.0
-I/usr/lib/x86_64-linux-gnu/glib-2.0/include -g -O2 -fstack-protector
--param=ssp-buffer-size=4 -Wformat -Werror=format-security -Wall -Wall -Wl,-z
-Wl,relro -o .libs/test-upload test_upload-test-upload.o -pthread -pthread
-pthread -lsoup-2.4 -lgio-2.0 ../libsocialweb/.libs/libsocialweb.so
../libsocialweb-client/.libs/libsocialweb-client.so -lgobject-2.0 -lgthread-2.0
-lgmodule-2.0 -lglib-2.0 -pthread
error: conflicting function declarations "sw_item_new"
old definition in module sw-item file sw-item.c line 130
struct _SwItem * (void)
new definition in module sw-item file sw-item.c line 31
SwItem * (void)
reason for conflict in types listed below (struct/struct):
composite type component counts differ (2/6)
struct _SwItem {
struct _GObject parent;
struct _SwItemPrivate * priv;
}
struct {
volatile signed int refcount;
unsigned int $pad0;
char * service;
char * uuid;
struct _GTimeVal date;
struct _GHashTable * props;
} SwItem
Makefile:492: recipe for target 'test-upload' failed
make[3]: *** [test-upload] Error 64
make[3]: Leaving directory
'/srv/jenkins-slave/workspace/sid-goto-cc-libsocialweb/libsocialweb-0.25.20/tests'
Makefile:558: recipe for target 'all-recursive' failed
make[2]: *** [all-recursive] Error 1
It seems that two definitions of function sw_item_new exist, and the linker
indeed gets to see both of them - and hence has to make an (arbitrary) choice:
http://sources.debian.net/src/libsocialweb/0.25.20-6/libsocialweb/sw-item.c?hl=130#L129
http://sources.debian.net/src/libsocialweb/0.25.20-6/libsocialweb-client/sw-item.c?hl=31#L30
As the structs are completely different, this will result in undefined
behaviour.
Best,
Michael
pgpauXWI6dbov.pgp
Description: PGP signature

