Comment 7 for bug 831308

Revision history for this message
Steffen Kieß (s-kiess) wrote :

This problem is caused by the fact that
a) there are definitions of eab_contact_display_get_type() in 3 libraries:
   - /usr/lib/evolution/3.2/libecontacteditor.so.0
   - /usr/lib/evolution/3.2/modules/libevolution-module-addressbook.so
   - /usr/lib/evolution/3.2/plugins/liborg-gnome-vcard-inline.so and
b) the code is linked with -Bsymbolic-functions (which seems to be turned on in Ubuntu by default), which means that the both the first and the second definition are used (because calls to eab_contact_display_get_type() do not go through the PLT).

eab_contact_display_get_type() tries to register the type "EABContactDisplay" which only succeeds the first time (for libevolution-module-addressbook.so). The second time (for libecontacteditor.so.0) the type registration fails which causes this error message:

(evolution:20644): GLib-GObject-WARNING **: cannot register existing type `EABContactDisplay'

(evolution:20644): e-utils-ERROR **: eab-contact-duplicate-detected.ui: Invalid type function on line 90: 'eab_contact_display_get_type'
Trace/breakpoint trap (core dumped)

The solution probably is not to use -Bsymbolic-functions for linking evolution.

#912081 and #996903 seem to be duplicates of this bug report.