[Users] [Bug 3819] New: Duplicate definition of global pygtk symbols

noreply at thewildbeast.co.uk noreply at thewildbeast.co.uk
Sat Apr 29 21:23:52 CEST 2017


            Bug ID: 3819
           Summary: Duplicate definition of global pygtk symbols
    Classification: Unclassified
           Product: Claws Mail
           Version: other
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P3
         Component: Other
          Assignee: users at lists.claws-mail.org
          Reporter: hanno at hboeck.de

Created attachment 1748

When including the pygtk headers they create some global symbols. See e.g. this
in pygtk.h:
#if defined(NO_IMPORT) || defined(NO_IMPORT_PYGTK)
extern struct _PyGtk_FunctionStruct *_PyGtk_API;
struct _PyGtk_FunctionStruct *_PyGtk_API;

If these headers get included multiple times then the symbol is defined
multiple times, which is not strictly correct C. Other files using the same
global symbol have to mark it with "extern". pygtk does that if some #define
commands are set. claws includes these headers in two files
(src/plugins/python/clawsmailmodule.c, src/plugins/python/python-hooks.c).

Now by default gcc is lax with this and will accept duplicate symbols. However
it can be turned into a more strict mode with the "-fno-common" flag. To

./configure CFLAGS="-O2 -fno-common"; make

It will show an error like this:
.libs/python_la-python-hooks.o:(.bss+0x8): multiple definition of
.libs/python_la-clawsmailmodule.o:(.bss+0x8): first defined here
.libs/python_la-python-hooks.o:(.bss+0x0): multiple definition of `_PyGtk_API'
.libs/python_la-clawsmailmodule.o:(.bss+0x0): first defined here

To fix this the proper #define commands need to be set in one of the files
including the pygtk headers. I have attached a patch to do that in
clawsmailmodule.c. Please apply.

You are receiving this mail because:
You are the assignee for the bug.

More information about the Users mailing list