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 662633 - Scheduled transaction editor crashes with gtk+-2.24.7
Scheduled transaction editor crashes with gtk+-2.24.7
Status: RESOLVED FIXED
Product: gtk+
Classification: Platform
Component: Widget: Other
2.24.x
Other Linux
: Normal critical
: ---
Assigned To: gtk-bugs
gtk-bugs
: 662844 663066 663722 (view as bug list)
Depends on:
Blocks:
 
 
Reported: 2011-10-24 18:27 UTC by Chris Vine
Modified: 2011-11-09 18:57 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Chris Vine 2011-10-24 18:27:10 UTC
With gtk+-2.24.7, gnucash's scheduled transaction editor segfaults the program in gtk_widget_propagate_hierarchy_changed_recurse().

By reverting to gtk+-2.24.6 the editor behaves normally.  I have not filed this as a gtk+-2.24 bug, as it may be that the gnucash code is at fault and this has only recently been uncovered by changes in the gtk+ code - no other programs of mine crash with gtk+-2.24.7.

I have tested this with gnucash-2.24.6 and gnucash-2.24.8.  Both behave the same way.  The glib version used is glib-2.30.1.

This will become a blocker as soon as distributions start to upgrade their gtk+-2 versions.

The backtrace is here:

Program received signal SIGSEGV, Segmentation fault.
0xb703c701 in gtk_widget_propagate_hierarchy_changed_recurse () from /usr/lib/libgtk-x11-2.0.so.0
(gdb) backtrace 
  • #0 gtk_widget_propagate_hierarchy_changed_recurse
    from /usr/lib/libgtk-x11-2.0.so.0
  • #1 gtk_toolbar_forall
    from /usr/lib/libgtk-x11-2.0.so.0
  • #2 gtk_container_forall
    from /usr/lib/libgtk-x11-2.0.so.0
  • #3 gtk_widget_propagate_hierarchy_changed_recurse
    from /usr/lib/libgtk-x11-2.0.so.0
  • #4 _gtk_widget_propagate_hierarchy_changed
    from /usr/lib/libgtk-x11-2.0.so.0
  • #5 gtk_widget_unparent
    from /usr/lib/libgtk-x11-2.0.so.0
  • #6 gtk_box_remove
    from /usr/lib/libgtk-x11-2.0.so.0
  • #7 g_cclosure_marshal_VOID__OBJECT
    from /usr/lib/libgobject-2.0.so.0
  • #8 g_type_class_meta_marshal
    from /usr/lib/libgobject-2.0.so.0
  • #9 g_closure_invoke
    from /usr/lib/libgobject-2.0.so.0
  • #10 signal_emit_unlocked_R
    from /usr/lib/libgobject-2.0.so.0
  • #11 g_signal_emit_valist
    from /usr/lib/libgobject-2.0.so.0
  • #12 g_signal_emit
    from /usr/lib/libgobject-2.0.so.0
  • #13 gtk_container_remove
    from /usr/lib/libgtk-x11-2.0.so.0
  • #14 gtk_widget_dispose
    from /usr/lib/libgtk-x11-2.0.so.0
  • #15 gtk_toolbar_dispose
    from /usr/lib/libgtk-x11-2.0.so.0
  • #16 g_object_run_dispose
    from /usr/lib/libgobject-2.0.so.0
  • #17 gtk_object_destroy
    from /usr/lib/libgtk-x11-2.0.so.0
  • #18 update_node
    from /usr/lib/libgtk-x11-2.0.so.0
  • #19 update_node
    from /usr/lib/libgtk-x11-2.0.so.0
  • #20 gtk_ui_manager_ensure_update
    from /usr/lib/libgtk-x11-2.0.so.0
  • #21 gnc_embedded_window_close_page
    from /opt/gnome/lib/gnucash/libgncmod-gnome-utils.so
  • #22 scheduledxaction_editor_dialog_destroy
    from /opt/gnome/lib/libgnc-gnome.so.0
  • #23 g_cclosure_marshal_VOID__VOID
    from /usr/lib/libgobject-2.0.so.0
  • #24 g_closure_invoke
    from /usr/lib/libgobject-2.0.so.0
  • #25 signal_emit_unlocked_R
    from /usr/lib/libgobject-2.0.so.0
  • #26 g_signal_emit_valist
    from /usr/lib/libgobject-2.0.so.0
  • #27 g_signal_emit
    from /usr/lib/libgobject-2.0.so.0
  • #28 gtk_object_dispose
    from /usr/lib/libgtk-x11-2.0.so.0
  • #29 gtk_widget_dispose
    from /usr/lib/libgtk-x11-2.0.so.0
  • #30 gtk_window_dispose
    from /usr/lib/libgtk-x11-2.0.so.0
  • #31 g_object_run_dispose
    from /usr/lib/libgobject-2.0.so.0
  • #32 gtk_object_destroy
    from /usr/lib/libgtk-x11-2.0.so.0
  • #33 sxed_close_handler
    from /opt/gnome/lib/libgnc-gnome.so.0
  • #34 gnc_close_gui_component
    from /opt/gnome/lib/gnucash/libgncmod-app-utils.so
  • #35 gnc_close_gui_component_by_data
    from /opt/gnome/lib/gnucash/libgncmod-app-utils.so
  • #36 editor_cancel_button_clicked
    from /opt/gnome/lib/libgnc-gnome.so.0
  • #37 g_cclosure_marshal_VOID__VOID
    from /usr/lib/libgobject-2.0.so.0
  • #38 g_closure_invoke
    from /usr/lib/libgobject-2.0.so.0
  • #39 signal_emit_unlocked_R
    from /usr/lib/libgobject-2.0.so.0
  • #40 g_signal_emit_valist
    from /usr/lib/libgobject-2.0.so.0
  • #41 g_signal_emit
    from /usr/lib/libgobject-2.0.so.0
  • #42 gtk_button_clicked
    from /usr/lib/libgtk-x11-2.0.so.0
  • #43 gtk_real_button_released
    from /usr/lib/libgtk-x11-2.0.so.0
  • #44 g_cclosure_marshal_VOID__VOID
    from /usr/lib/libgobject-2.0.so.0
  • #45 g_type_class_meta_marshal
    from /usr/lib/libgobject-2.0.so.0
  • #46 g_closure_invoke
    from /usr/lib/libgobject-2.0.so.0
  • #47 signal_emit_unlocked_R
    from /usr/lib/libgobject-2.0.so.0
  • #48 g_signal_emit_valist
    from /usr/lib/libgobject-2.0.so.0
  • #49 g_signal_emit
    from /usr/lib/libgobject-2.0.so.0
  • #50 gtk_button_released
    from /usr/lib/libgtk-x11-2.0.so.0
  • #51 gtk_button_button_release
    from /usr/lib/libgtk-x11-2.0.so.0
  • #52 _gtk_marshal_BOOLEAN__BOXED
    from /usr/lib/libgtk-x11-2.0.so.0
  • #53 g_type_class_meta_marshal
    from /usr/lib/libgobject-2.0.so.0
  • #54 g_closure_invoke
    from /usr/lib/libgobject-2.0.so.0
  • #55 signal_emit_unlocked_R
    from /usr/lib/libgobject-2.0.so.0
  • #56 g_signal_emit_valist
    from /usr/lib/libgobject-2.0.so.0
  • #57 g_signal_emit
    from /usr/lib/libgobject-2.0.so.0
  • #58 gtk_widget_event_internal
    from /usr/lib/libgtk-x11-2.0.so.0
  • #59 gtk_propagate_event
    from /usr/lib/libgtk-x11-2.0.so.0
  • #60 gtk_main_do_event
    from /usr/lib/libgtk-x11-2.0.so.0
  • #61 gdk_event_dispatch
    from /usr/lib/libgdk-x11-2.0.so.0
  • #62 g_main_context_dispatch
    from /usr/lib/libglib-2.0.so.0
  • #63 g_main_context_iterate.clone.5
    from /usr/lib/libglib-2.0.so.0
  • #64 g_main_loop_run
    from /usr/lib/libglib-2.0.so.0
  • #65 gtk_main
    from /usr/lib/libgtk-x11-2.0.so.0
  • #66 gnc_ui_start_event_loop
    from /opt/gnome/lib/gnucash/libgncmod-gnome-utils.so
  • #67 inner_main
  • #68 ??
    from /usr/lib/libguile.so.17
  • #69 ??
    from /usr/lib/libguile.so.17
  • #70 scm_c_catch
    from /usr/lib/libguile.so.17
  • #71 scm_i_with_continuation_barrier
    from /usr/lib/libguile.so.17
  • #72 scm_c_with_continuation_barrier
    from /usr/lib/libguile.so.17
  • #73 scm_i_with_guile_and_parent
    from /usr/lib/libguile.so.17
  • #74 scm_with_guile
    from /usr/lib/libguile.so.17
  • #75 scm_boot_guile
    from /usr/lib/libguile.so.17
  • #76 main

Comment 1 Chris Vine 2011-10-24 18:32:17 UTC
I should have said that the crash occurs when you bring up an "Edit Scheduled Transaction" dialog and then try and close the edit dialog.  Closing the dialog crashes gnucash.
Comment 2 Geert Janssens 2011-10-24 20:26:40 UTC
Thank you for reporting this bug.

Do you have the opportunity to test this with the current development version as well ? The source can be found at https://svn.gnucash.org/repo/gnucash/trunk

I'm asking because in the development tree, the scheduled transaction dialogs have been migrated from libglade to gtkbuilder format, which included several code changes. This may already have fixed the problem.
Comment 3 Chris Vine 2011-10-25 09:57:48 UTC
Hmmm, your webkit requirement is a real problem.  gnome-3 requires webkit to be compiled against gtk+3.  Your program requires it to be compiled against gtk+2.  The two don't mix (it errors out with mixed symbols).

Unless you are going to major on windows in the future I think you need to rethink your webkit stuff, or port gnucash to gtk+3.  If you are going to major on windows in the future and gnome-3 users are going to have to stay with gnucash-2.4, the need to fix this bug becomes the greater.

Out of interest, what version of webkit are you using?
Comment 4 Chris Vine 2011-10-25 12:24:31 UTC
Ah, I see webkit is parallel installable for gtk+2 and gtk+3.  I'll recompile webkit for gtk+2 later and give it another go.
Comment 5 Christian Stimming 2011-10-27 19:08:34 UTC
*** Bug 662844 has been marked as a duplicate of this bug. ***
Comment 6 Christian Stimming 2011-10-31 10:31:20 UTC
*** Bug 663066 has been marked as a duplicate of this bug. ***
Comment 8 Chris Vine 2011-11-01 16:07:48 UTC
(Reply to comment #2)
The scheduled transaction editor also segfaults with the latest svn (revision 21513) with gtk+-2.24.7.

The scheduled transaction editor in r21513 also has the unpleasant habit of trying to occupy the whole vertical extent of the screen but (on gnome-3.2 at least) miscalculates this, so that the OK/Cancel buttons are below the bottom of the screen; either that or the dialog author has unnecessarily picked a fixed size which requires a non-standard screen size to show it.  This means that the editor buttons can only be reached via the keyboard.
Comment 9 Bill Nottingham 2011-11-02 18:55:55 UTC
CC'ing gtk patch author.
Comment 10 Michael Natterer 2011-11-02 19:03:35 UTC
The same change is in gtk3, and i'm confident that it fixes a bug and is
correct this way. What exactly are you doing in GnuCach to trigger
this crash?
Comment 11 Michael Natterer 2011-11-02 19:22:20 UTC
My faul, damnit, GTK+ 2.24.7 is broken, will fix instantly.
Comment 12 Michael Natterer 2011-11-02 19:29:02 UTC
Fixed in git:

commit 0a0fd5af99f2ae9b0f8cc6b943b98b7be43ed723
Author: Michael Natterer <mitch@gimp.org>
Date:   Wed Nov 2 20:27:39 2011 +0100

    Bug 662633 - Scheduled transaction editor crashes with gtk+-2.24.7
    
    Fix commit a516d2359c9eac84bfa4682a70a62315adedb1d6: check if
    priv->arrow_button exists in forall().

 gtk/gtktoolbar.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
Comment 13 Bill Nottingham 2011-11-02 19:41:10 UTC
Verified it works for me here, thanks!
Comment 14 Christian Stimming 2011-11-02 20:02:59 UTC
@Michael: 8 minutes between the personal notification and a reaction, only another 19 minutes to identify the fact that it's a bug and its cause, and another 7 minutes until the fix is committed - this is indeed impressive! Thanks a lot!
Comment 15 Christian Stimming 2011-11-09 18:57:09 UTC
*** Bug 663722 has been marked as a duplicate of this bug. ***