Bug#749621: anjuta: Conflicting declarations of function symbol_db_engine_new_full

Michael Tautschnig mt at debian.org
Wed May 28 17:18:42 UTC 2014


Package: anjuta
Version: 2:3.8.4-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.

[...]
libtool: link: gcc -Wall -Wstrict-prototypes -Wnested-externs -Werror=missing-prototypes -Werror=implicit-function-declaration -Werror=pointer-arith -Werror=init-self -Werror=format-security -Werror=format=2 -Werror=missing-include-dirs -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -Wall -pthread -Wl,--export-dynamic -pthread -pthread -Wl,-z -Wl,relro -Wl,-O1 -o .libs/benchmark benchmark.o  ../../../../libanjuta/.libs/libanjuta-3.so -lgmodule-2.0 -lgtk-3 -lgdk-3 -lpangocairo-1.0 -lpango-1.0 -latk-1.0 /usr/lib/x86_64-linux-gnu/libcairo-gobject.so /usr/lib/x86_64-linux-gnu/libcairo.so -lgio-2.0 -lgdk_pixbuf-2.0 -lgda-5.0 -lgobject-2.0 -lgthread-2.0 -lglib-2.0 -lxml2 -Wl,--as-needed ../../.libs/libanjuta-symbol-db.so -lutil -pthread -Wl,-rpath -Wl,/usr/lib/anjuta

error: conflicting function declarations "symbol_db_engine_new_full"
old definition in module benchmark file ../../symbol-db-engine-core.h line 88
struct _SymbolDBEngine * (const char *, const char *)
new definition in module symbol-db-engine-core file symbol-db-engine-core.c line 2397
struct _SymbolDBEngine * (const char *ctags_path, const char *database_name)

reason for conflict at _SymbolDBEngine.priv in types listed below (struct/struct):
composite type component counts differ (42/41)
struct _SymbolDBEnginePriv {
  char * anjuta_db_file;
  char * ctags_path;
  struct _GdaConnection * db_connection;
  struct _GdaSqlParser * sql_parser;
  char * db_directory;
  char * project_directory;
  char * cnc_string;
  signed int scan_process_id_sequence;
  signed int current_scan_process_id;
  struct _GAsyncQueue * scan_aqueue;
  struct _GAsyncQueue * updated_syms_id_aqueue;
  struct _GAsyncQueue * updated_scope_syms_id_aqueue;
  struct _GAsyncQueue * inserted_syms_id_aqueue;
  signed int is_scanning;
  unsigned int $pad0;
  char * shared_mem_str;
  struct _IO_FILE * shared_mem_file;
  signed int shared_mem_fd;
  unsigned int $pad1;
  struct _AnjutaLauncher * ctags_launcher;
  struct _GList * removed_launchers;
  signed int shutting_down;
  signed int is_first_population;
  unsigned long int symbols_scanned_count;
  struct _GAsyncQueue * waiting_scan_aqueue;
  unsigned long int waiting_scan_handler;
  union _GMutex mutex;
  struct _GAsyncQueue * signals_aqueue;
  struct _GThreadPool * thread_pool;
  signed int timeout_trigger_handler;
  signed int trigger_closure_retries;
  signed int thread_closure_retries;
  unsigned int $pad2;
  struct _GHashTable * sym_type_conversion_hash;
  struct _GHashTable * garbage_shared_mem_files;
  struct _GHashTable * kind_cache;
  struct _GHashTable * access_cache;
  struct _GHashTable * implementation_cache;
  struct _GHashTable * language_cache;
  struct _GQueue * tmp_heritage_tablemap;
  struct _static_query_node *[32l] static_query_list;
  struct _GTimer * first_scan_timer_DEBUG;
}
struct _SymbolDBEnginePriv {
  char * anjuta_db_file;
  char * ctags_path;
  struct _GdaConnection * db_connection;
  struct _GdaSqlParser * sql_parser;
  char * db_directory;
  char * project_directory;
  char * cnc_string;
  signed int scan_process_id_sequence;
  signed int current_scan_process_id;
  struct _GAsyncQueue * scan_aqueue;
  struct _GAsyncQueue * updated_syms_id_aqueue;
  struct _GAsyncQueue * updated_scope_syms_id_aqueue;
  struct _GAsyncQueue * inserted_syms_id_aqueue;
  signed int is_scanning;
  unsigned int $pad0;
  char * shared_mem_str;
  struct _IO_FILE * shared_mem_file;
  signed int shared_mem_fd;
  unsigned int $pad1;
  struct _AnjutaLauncher * ctags_launcher;
  struct _GList * removed_launchers;
  signed int shutting_down;
  signed int is_first_population;
  unsigned long int symbols_scanned_count;
  struct _GAsyncQueue * waiting_scan_aqueue;
  unsigned long int waiting_scan_handler;
  union _GMutex mutex;
  struct _GAsyncQueue * signals_aqueue;
  struct _GThreadPool * thread_pool;
  signed int timeout_trigger_handler;
  signed int trigger_closure_retries;
  signed int thread_closure_retries;
  unsigned int $pad2;
  struct _GHashTable * sym_type_conversion_hash;
  struct _GHashTable * garbage_shared_mem_files;
  struct _GHashTable * kind_cache;
  struct _GHashTable * access_cache;
  struct _GHashTable * implementation_cache;
  struct _GHashTable * language_cache;
  struct _GQueue * tmp_heritage_tablemap;
  struct _static_query_node *[32l] static_query_list;
}
Makefile:469: recipe for target 'benchmark' failed
make[7]: *** [benchmark] Error 64
make[7]: Leaving directory '/srv/jenkins-slave/workspace/sid-goto-cc-anjuta/anjuta-3.8.4/plugins/symbol-db/benchmark/symbol-db'
Makefile:465: recipe for target 'all-recursive' failed
make[6]: *** [all-recursive] Error 1

Reviewing the code, it seems that the difference lies in the macro DEBUG not
being defined uniformly:

http://sources.debian.net/src/anjuta/2:3.8.4-3/plugins/symbol-db/symbol-db-engine-priv.h?hl=223#L223

As in particular the actual definition allocates memory *not* containing the
first_scan_timer_DEBUG field, invalid memory accesses may occur. Yet the path
name suggests this is some benchmark only, thus setting the severity to minor.

Best,
Michael

-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 859 bytes
Desc: not available
URL: <http://lists.alioth.debian.org/pipermail/pkg-gnome-maintainers/attachments/20140528/b4f94d96/attachment.sig>


More information about the pkg-gnome-maintainers mailing list