Package: otf
Version: 1.12.4+dfsg-3
Severity: minor
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.

[...]
  CCLD     otf_generic_streams

error: conflicting function declarations "OTF_WStream_open"
old definition in module generic_streams file ../../otflib/OTF_WStream.h line 
166
struct struct_OTF_WStream * (const char *, unsigned int, struct 
struct_OTF_FileManager *)
new definition in module OTF_Writer file OTF_WStream.h line 166
struct struct_OTF_WStream * (const char *namestub, unsigned int id, struct 
struct_OTF_FileManager *manager)

reason for conflict in types listed below (struct/struct):
composite type component counts differ (11/13)
struct struct_OTF_WStream {
  char * namestub;
  unsigned int id;
  unsigned int format;
  struct struct_OTF_WBuffer * defBuffer;
  struct struct_OTF_WBuffer * eventBuffer;
  struct struct_OTF_WBuffer * snapsBuffer;
  struct struct_OTF_WBuffer * statsBuffer;
  struct struct_OTF_WBuffer * markerBuffer;
  unsigned int compression;
  unsigned int buffersizes;
  struct struct_OTF_FileManager * manager;
}
struct struct_OTF_WStream {
  char * namestub;
  unsigned int id;
  unsigned int format;
  struct struct_OTF_WBuffer * defBuffer;
  struct struct_OTF_WBuffer * eventBuffer;
  struct struct_OTF_WBuffer * snapsBuffer;
  struct struct_OTF_WBuffer * statsBuffer;
  struct struct_OTF_WBuffer * markerBuffer;
  unsigned int compression;
  unsigned int buffersizes;
  unsigned int zbuffersizes;
  unsigned int <padding>;
  struct struct_OTF_FileManager * manager;
}
Makefile:408: recipe for target 'otf_generic_streams' failed
make[4]: *** [otf_generic_streams] Error 64
make[4]: Leaving directory 
'/srv/jenkins-slave/workspace/sid-goto-cc-otf/otf-1.12.4+dfsg/tests/generic_streams'
Makefile:543: recipe for target 'check-am' failed
make[3]: *** [check-am] Error 2

Observe the additional zbuffersizes field in the second declaration, which will
also cause the offset of the member manager to be shifted. This is due to a
missing HAVE_ZLIB:

http://sources.debian.net/src/otf/1.12.4+dfsg-3/otflib/OTF_WStream.h?hl=140#L140

when including OTF_WStream.h from tests/generic_streams/generic_streams.c.
Consequently the function declarations conflict when invoked from here:

http://sources.debian.net/src/otf/1.12.4+dfsg-3/tests/generic_streams/generic_streams.c?hl=36#L36

Yet this may be safe at present as the member of struct_OTF_WStream are not
being accessed from the test directly. If that is the intended way of using it,
it may be worth considering making the struct private, i.e., not exposing the
full type in the header file.

Best,
Michael

Attachment: pgpXfjfvVfSQq.pgp
Description: PGP signature

Reply via email to