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

Attachment: pgpauXWI6dbov.pgp
Description: PGP signature

Reply via email to