After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 594473 - -Bsymbolic-functions linker flag causes problems at runtime
-Bsymbolic-functions linker flag causes problems at runtime
Status: RESOLVED WONTFIX
Product: evolution
Classification: Applications
Component: general
3.6.x (obsolete)
Other Linux
: Normal normal
: ---
Assigned To: Evolution Shell Maintainers Team
Evolution QA team
: 679352 728687 (view as bug list)
Depends on:
Blocks:
 
 
Reported: 2009-09-08 10:18 UTC by Sebastien Bacher
Modified: 2014-04-22 12:53 UTC
See Also:
GNOME target: ---
GNOME version: 3.5/3.6



Description Sebastien Bacher 2009-09-08 10:18:25 UTC
The bug has been opened on https://bugs.launchpad.net/bugs/425621

"Evolution hangs when trying to open multiple notes.

Steps to reproduce:
1. start evolution
2. go to "notes" (or whatever that is: I have "Notizen")
3. Ensure you have at least two notes inside.
4. Open the first note via double-click
5. close it again
6. try to open the second note: Evolution stops responding

Perhaps I should mention: The notes got into evolution vial gpilot synchronization with my palm os. But when adding a new note from evolution, the same problem occurs.

Using ubuntu karmic
evolution 2.27.91-0ubuntu1
gnome-pilot 2.0.17-0ubuntu2
gnome-pilot-conduits 2.0.15-1.2

apport doesn't report no crash.
I don't know how to use gdb. When starting "gdb evolution" (and then "run"), I get these messages after opening and closing the first note:

===
[New Thread 0xb36f8b70 (LWP 10824)]

(evolution:10798): GLib-GObject-WARNING **: cannot register existing type `CompEditor'

(evolution:10798): GLib-CRITICAL **: g_once_init_leave: assertion `initialization_value != 0' failed

(evolution:10798): calendar-gui-CRITICAL **: e_comp_editor_registry_add: assertion `IS_COMP_EDITOR (editor)' failed"
Comment 1 Sebastien Bacher 2009-09-08 12:00:16 UTC
getting a stacktrace from the register error

"GLib-GObject-WARNING **: cannot register existing type `CompEditor'
aborting...

Program received signal SIGTRAP, Trace/breakpoint trap.
IA__g_logv (log_domain=<value optimized out>, log_level=G_LOG_LEVEL_WARNING, 
    format=0x13f3568 "cannot register existing type `%s'", args1=0xbfffdcec "M\243\237\5")
    at /build/buildd/glib2.0-2.21.6/glib/gmessages.c:512
512	/build/buildd/glib2.0-2.21.6/glib/gmessages.c: Aucun fichier ou dossier de ce type.
	in /build/buildd/glib2.0-2.21.6/glib/gmessages.c
(gdb) bt
  • #0 IA__g_logv
    at /build/buildd/glib2.0-2.21.6/glib/gmessages.c line 512
  • #1 IA__g_log
    at /build/buildd/glib2.0-2.21.6/glib/gmessages.c line 526
  • #2 check_type_name_I
    at /build/buildd/glib2.0-2.21.6/gobject/gtype.c line 661
  • #3 IA__g_type_register_static
    at /build/buildd/glib2.0-2.21.6/gobject/gtype.c line 2463
  • #4 IA__g_type_register_static_simple
    at /build/buildd/glib2.0-2.21.6/gobject/gtype.c line 2431
  • #5 comp_editor_get_type
    at comp-editor.c line 179
  • #6 e_comp_editor_registry_add
    at e-comp-editor-registry.c line 128
  • #7 open_memo
    at e-memo-table.c line 779
  • #8 e_marshal_VOID__INT_INT_BOXED
    at e-marshal.c line 1206
  • #9 IA__g_closure_invoke
    at /build/buildd/glib2.0-2.21.6/gobject/gclosure.c line 767
  • #10 signal_emit_unlocked_R
    at /build/buildd/glib2.0-2.21.6/gobject/gsignal.c line 3247
  • #11 IA__g_signal_emit_valist
    at /build/buildd/glib2.0-2.21.6/gobject/gsignal.c line 2980
  • #12 IA__g_signal_emit
    at /build/buildd/glib2.0-2.21.6/gobject/gsignal.c line 3037
  • #13 group_double_click
    at e-table.c line 773
  • #14 e_marshal_VOID__INT_INT_BOXED
    at e-marshal.c line 1206
  • #15 IA__g_closure_invoke
    at /build/buildd/glib2.0-2.21.6/gobject/gclosure.c line 767
  • #16 signal_emit_unlocked_R
    at /build/buildd/glib2.0-2.21.6/gobject/gsignal.c line 3247
  • #17 IA__g_signal_emit_valist
    at /build/buildd/glib2.0-2.21.6/gobject/gsignal.c line 2980
  • #18 IA__g_signal_emit
    at /build/buildd/glib2.0-2.21.6/gobject/gsignal.c line 3037
  • #19 e_table_group_double_click
    at e-table-group.c line 475
  • #20 etgl_double_click
    at e-table-group-leaf.c line 186
  • #21 e_marshal_VOID__INT_INT_BOXED
    at e-marshal.c line 1206
  • #22 IA__g_closure_invoke
    at /build/buildd/glib2.0-2.21.6/gobject/gclosure.c line 767
  • #23 signal_emit_unlocked_R
    at /build/buildd/glib2.0-2.21.6/gobject/gsignal.c line 3247
  • #24 IA__g_signal_emit_valist
    at /build/buildd/glib2.0-2.21.6/gobject/gsignal.c line 2980
  • #25 IA__g_signal_emit
    at /build/buildd/glib2.0-2.21.6/gobject/gsignal.c line 3037
  • #26 eti_event
    at e-table-item.c line 2584
  • #27 gnome_canvas_marshal_BOOLEAN__BOXED
    from /usr/lib/libgnomecanvas-2.so.0
  • #28 g_type_class_meta_marshal
  • #29 IA__g_closure_invoke
    at /build/buildd/glib2.0-2.21.6/gobject/gclosure.c line 767
  • #30 signal_emit_unlocked_R
    at /build/buildd/glib2.0-2.21.6/gobject/gsignal.c line 3285
  • #31 IA__g_signal_emit_valist
    at /build/buildd/glib2.0-2.21.6/gobject/gsignal.c line 2990
  • #32 IA__g_signal_emit_by_name
    at /build/buildd/glib2.0-2.21.6/gobject/gsignal.c line 3074
  • #33 emit_event
    at e-canvas.c line 250
  • #34 _gtk_marshal_BOOLEAN__BOXED
    at /build/buildd/gtk+2.0-2.17.10/gtk/gtkmarshalers.c line 84
  • #35 g_type_class_meta_marshal
    at /build/buildd/glib2.0-2.21.6/gobject/gclosure.c line 878
  • #36 IA__g_closure_invoke
    at /build/buildd/glib2.0-2.21.6/gobject/gclosure.c line 767
  • #37 signal_emit_unlocked_R
    at /build/buildd/glib2.0-2.21.6/gobject/gsignal.c line 3285
  • #38 IA__g_signal_emit_valist
    at /build/buildd/glib2.0-2.21.6/gobject/gsignal.c line 2990

Comment 2 Matthew Barnes 2009-09-08 12:27:47 UTC
Can you set a breakpoint on "comp_editor_get_type" and get a stacktrace from the very first call to this after the program starts (before the warning)?

GType registration errors like this are usually due to some GTypeModule registering the type, the module is then unloaded which resets all static variables, then something in the main program registers the same type.

So the usual "get_type" pattern breaks because "type" is reset to 0, so the next call after that tries to register a second "CompEditor" type, which fails.

   GType
   comp_editor_get_type (void)
   {
           /* This is reset when a GTypeModule triggers a
              type registration and then gets unloaded. */
           static GType type = 0;

           if (G_UNLIKELY (type == 0)) {
                   /* register a static GType */
           }

           return type;
   }
Comment 3 Sebastien Bacher 2009-09-08 13:04:13 UTC
the first stop on this symbol is when double clicking on a memo note

"Breakpoint 1, comp_editor_get_type () at comp-editor.c:179
179	G_DEFINE_TYPE (CompEditor, comp_editor, GTK_TYPE_WINDOW)
(gdb) bt
  • #0 comp_editor_get_type
    at comp-editor.c line 179
  • #1 memo_editor_get_type
    at memo-editor.c line 70
  • #2 memo_editor_new
    at memo-editor.c line 167
  • #3 open_memo
    at e-memo-table.c line 774
  • #4 e_marshal_VOID__INT_INT_BOXED
    at e-marshal.c line 1206
  • #5 IA__g_closure_invoke
    at /build/buildd/glib2.0-2.21.6/gobject/gclosure.c line 767
  • #6 signal_emit_unlocked_R
    at /build/buildd/glib2.0-2.21.6/gobject/gsignal.c line 3247
  • #7 IA__g_signal_emit_valist
    at /build/buildd/glib2.0-2.21.6/gobject/gsignal.c line 2980
  • #8 IA__g_signal_emit
    at /build/buildd/glib2.0-2.21.6/gobject/gsignal.c line 3037
  • #9 group_double_click
    at e-table.c line 773
  • #10 e_marshal_VOID__INT_INT_BOXED
    at e-marshal.c line 1206
  • #11 IA__g_closure_invoke
    at /build/buildd/glib2.0-2.21.6/gobject/gclosure.c line 767
  • #12 signal_emit_unlocked_R
    at /build/buildd/glib2.0-2.21.6/gobject/gsignal.c line 3247
  • #13 IA__g_signal_emit_valist
    at /build/buildd/glib2.0-2.21.6/gobject/gsignal.c line 2980
  • #14 IA__g_signal_emit
    at /build/buildd/glib2.0-2.21.6/gobject/gsignal.c line 3037
  • #15 e_table_group_double_click
    at e-table-group.c line 475
  • #16 etgl_double_click
    at e-table-group-leaf.c line 186
  • #17 e_marshal_VOID__INT_INT_BOXED
    at e-marshal.c line 1206
  • #18 IA__g_closure_invoke
  • #19 signal_emit_unlocked_R
    at /build/buildd/glib2.0-2.21.6/gobject/gsignal.c line 3247
  • #20 IA__g_signal_emit_valist
    at /build/buildd/glib2.0-2.21.6/gobject/gsignal.c line 2980
  • #21 IA__g_signal_emit
    at /build/buildd/glib2.0-2.21.6/gobject/gsignal.c line 3037
  • #22 eti_event
    at e-table-item.c line 2584
  • #23 gnome_canvas_marshal_BOOLEAN__BOXED
    from /usr/lib/libgnomecanvas-2.so.0
  • #24 g_type_class_meta_marshal
    at /build/buildd/glib2.0-2.21.6/gobject/gclosure.c line 878
  • #25 IA__g_closure_invoke
    at /build/buildd/glib2.0-2.21.6/gobject/gclosure.c line 767
  • #26 signal_emit_unlocked_R
    at /build/buildd/glib2.0-2.21.6/gobject/gsignal.c line 3285
  • #27 IA__g_signal_emit_valist
    at /build/buildd/glib2.0-2.21.6/gobject/gsignal.c line 2990
  • #28 IA__g_signal_emit_by_name
    at /build/buildd/glib2.0-2.21.6/gobject/gsignal.c line 3074
  • #29 emit_event
    at e-canvas.c line 250
  • #30 _gtk_marshal_BOOLEAN__BOXED
    at /build/buildd/gtk+2.0-2.17.10/gtk/gtkmarshalers.c line 84
  • #31 g_type_class_meta_marshal
    at /build/buildd/glib2.0-2.21.6/gobject/gclosure.c line 878
  • #32 IA__g_closure_invoke
  • #33 signal_emit_unlocked_R
    at /build/buildd/glib2.0-2.21.6/gobject/gsignal.c line 3285
  • #34 IA__g_signal_emit_valist
    at /build/buildd/glib2.0-2.21.6/gobject/gsignal.c line 2990
  • #35 IA__g_signal_emit
    at /build/buildd/glib2.0-2.21.6/gobject/gsignal.c line 3037
  • #36 gtk_widget_event_internal
    at /build/buildd/gtk+2.0-2.17.10/gtk/gtkwidget.c line 4786
  • #37 IA__gtk_propagate_event
    at /build/buildd/gtk+2.0-2.17.10/gtk/gtkmain.c line 2396
  • #38 IA__gtk_main_do_event
    at /build/buildd/gtk+2.0-2.17.10/gtk/gtkmain.c line 1601

Comment 4 Sebastien Bacher 2009-09-08 13:07:45 UTC
the break point is called some ten times before the warning
Comment 5 Matthew Barnes 2009-09-08 13:57:57 UTC
Interesting, so the main loop is already started on the first breakpoint.
The modules are all unloaded (I think) before the main loop starts.

Are the memos being added to the "On The Computer / Personal" memo list?

Also, is the breakpoint always occurring in Thread #1?  Nothing but the main loop thread should be creating memo editors.
Comment 6 Sebastien Bacher 2009-09-08 14:36:18 UTC
the config used had no memo before trying to step there, the memos have been added using the text entry just by tapping some random text and enter twice and the category used is the personal computer one
Comment 7 Sebastien Bacher 2009-09-08 14:51:43 UTC
the breakpoint before the warnings

"Breakpoint 1, comp_editor_get_type () at comp-editor.c:179
179	G_DEFINE_TYPE (CompEditor, comp_editor, GTK_TYPE_WINDOW)
(gdb) bt
  • #0 comp_editor_get_type
    at comp-editor.c line 179
  • #1 e_comp_editor_registry_add
    at e-comp-editor-registry.c line 128
  • #2 open_memo
    at e-memo-table.c line 779
  • #3 e_marshal_VOID__INT_INT_BOXED
    at e-marshal.c line 1206
  • #4 IA__g_closure_invoke
    at /build/buildd/glib2.0-2.21.6/gobject/gclosure.c line 767
  • #5 signal_emit_unlocked_R
    at /build/buildd/glib2.0-2.21.6/gobject/gsignal.c line 3247
  • #6 IA__g_signal_emit_valist
    at /build/buildd/glib2.0-2.21.6/gobject/gsignal.c line 2980
  • #7 IA__g_signal_emit
    at /build/buildd/glib2.0-2.21.6/gobject/gsignal.c line 3037
  • #8 group_double_click
    at e-table.c line 773
  • #9 e_marshal_VOID__INT_INT_BOXED
    at e-marshal.c line 1206
  • #10 IA__g_closure_invoke
    at /build/buildd/glib2.0-2.21.6/gobject/gclosure.c line 767
  • #11 signal_emit_unlocked_R
    at /build/buildd/glib2.0-2.21.6/gobject/gsignal.c line 3247
  • #12 IA__g_signal_emit_valist
    at /build/buildd/glib2.0-2.21.6/gobject/gsignal.c line 2980
  • #13 IA__g_signal_emit
    at /build/buildd/glib2.0-2.21.6/gobject/gsignal.c line 3037
  • #14 e_table_group_double_click
    at e-table-group.c line 475
  • #15 etgl_double_click
    at e-table-group-leaf.c line 186
  • #16 e_marshal_VOID__INT_INT_BOXED
---Type <return> to continue, or q <return> to quit---param_values=Quit
(gdb) c
Continuing.
[Thread 0xb7cd3b70 (LWP 10691) exited]

(evolution:10674): GLib-GObject-WARNING **: cannot register existing type `CompEditor'

(evolution:10674): GLib-CRITICAL **: g_once_init_leave: assertion `initialization_value != 0' failed

(evolution:10674): calendar-gui-CRITICAL **: e_comp_editor_registry_add: assertion `IS_COMP_EDITOR (editor)' failed

Breakpoint 1, comp_editor_get_type () at comp-editor.c:179
179	G_DEFINE_TYPE (CompEditor, comp_editor, GTK_TYPE_WINDOW)
"
Comment 8 Sebastien Bacher 2009-09-08 15:57:39 UTC
the issue only happens when building with -Bsymbolic-functions
Comment 9 Matthew Barnes 2009-09-08 21:00:35 UTC
Rescoping this as a build issue.
Comment 10 Wang Xin 2010-01-14 08:52:08 UTC
We encontered the same problem on Solaris recently. Yes, it can be fixed by modifying build option. But the real cause is that both libevolution-calendar.so and libevolution-cal-shared.so have their own copy of comp_editor_get_type (because they both staticlly link to libcal-dialogs.la).

And comp_editor_get_type uses a static function variable to make sure that the type is only registered once. But because every comp_editor_get_type has its own static variable, so the type are registered twice and leads to hang because some code should only be executed once.
Comment 11 Wang Xin 2010-01-14 08:58:38 UTC
I suggest modifying libcal-dialogs.la to make it a dynamic library.
Comment 12 Wang Xin 2010-01-14 10:41:14 UTC
This problem can not be reproduced for trunk because libevolution-cal-shared.so has been removed.
Comment 13 Mathieu Trudel-Lapierre 2012-09-07 13:12:03 UTC
*** Bug 679352 has been marked as a duplicate of this bug. ***
Comment 14 Matthew Barnes 2013-09-05 03:37:48 UTC
I'm not going to do anything to fix this so closing as WONTFIX.

Don't use -Bsymbolic-functions.
Comment 15 Xavier Claessens 2014-04-22 12:53:21 UTC
*** Bug 728687 has been marked as a duplicate of this bug. ***