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 739584 - gnucash-2.6.4 segfaults regularly on transfer
gnucash-2.6.4 segfaults regularly on transfer
Status: RESOLVED FIXED
Product: GnuCash
Classification: Other
Component: General
2.6.4
Other Linux
: Normal critical
: ---
Assigned To: gnucash-general-maint
gnucash-general-maint
Depends on:
Blocks:
 
 
Reported: 2014-11-03 17:58 UTC by Alex
Modified: 2018-06-29 23:35 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Alex 2014-11-03 17:58:57 UTC
Steps to reproduce: 
1. Open transfer dialog
2. Chose accounts to tralsfer from and to
3. Enter amount of money to transfer
4. Press OK
5. gnucash segfaults 

Frequency: Sometimes. When repeating just the same transfer after first crash the next does not happens. It just heppens sometimes. Not seen any dependencies.

According to https://bugzilla.gnome.org/show_bug.cgi?id=734833#c7 : 
Currency is RUB(Russian rubble)

Stack trace: 

  • #0 g_type_instance_get_private
    from /usr/lib64/libgobject-2.0.so.0
  • #1 gnc_commodity_equal
    at gnc-commodity.c line 1582
  • #2 gnc_xfer_dialog_update_price
    at dialog-transfer.c line 207
  • #3 gnc_xfer_date_changed_cb
    at dialog-transfer.c line 990
  • #4 ??
    from /usr/lib64/libgobject-2.0.so.0
  • #5 g_signal_emit_valist
    from /usr/lib64/libgobject-2.0.so.0
  • #6 g_signal_emit
    from /usr/lib64/libgobject-2.0.so.0
  • #7 gnc_date_edit_set_time_internal
    at gnc-date-edit.c line 536
  • #8 gnc_date_edit_set_property
    at gnc-date-edit.c line 587
  • #9 g_object_set_valist
    from /usr/lib64/libgobject-2.0.so.0
  • #10 g_object_set
    from /usr/lib64/libgobject-2.0.so.0
  • #11 gnc_date_edit_set_time
    at gnc-date-edit.c line 736
  • #12 gnc_date_edit_set_time_ts
    at gnc-date-edit.c line 755
  • #13 day_selected
    at gnc-date-edit.c line 174
  • #14 ??
    from /usr/lib64/libgobject-2.0.so.0
  • #15 g_signal_emit_valist
    from /usr/lib64/libgobject-2.0.so.0
  • #16 g_signal_emit
    from /usr/lib64/libgobject-2.0.so.0
  • #17 gnc_date_edit_set_time_internal
    at gnc-date-edit.c line 521
  • #18 gnc_date_edit_set_property
    at gnc-date-edit.c line 587
  • #19 g_object_set_valist
    from /usr/lib64/libgobject-2.0.so.0
  • #20 g_object_set
    from /usr/lib64/libgobject-2.0.so.0
  • #21 gnc_date_edit_set_time
    at gnc-date-edit.c line 736
  • #22 date_focus_out_event
    at gnc-date-edit.c line 818
  • #23 ??
    from /usr/lib64/libgtk-x11-2.0.so.0
  • #24 g_closure_invoke
    from /usr/lib64/libgobject-2.0.so.0
  • #25 ??
    from /usr/lib64/libgobject-2.0.so.0
  • #26 g_signal_emit_valist
    from /usr/lib64/libgobject-2.0.so.0
  • #27 g_signal_emit
    from /usr/lib64/libgobject-2.0.so.0
  • #28 ??
    from /usr/lib64/libgtk-x11-2.0.so.0
  • #29 gtk_widget_send_focus_change
    from /usr/lib64/libgtk-x11-2.0.so.0
  • #30 ??
    from /usr/lib64/libgtk-x11-2.0.so.0
  • #31 ??
    from /usr/lib64/libgtk-x11-2.0.so.0
  • #32 g_cclosure_marshal_VOID__OBJECTv
    from /usr/lib64/libgobject-2.0.so.0
  • #33 ??
    from /usr/lib64/libgobject-2.0.so.0
  • #34 g_signal_emit_valist
    from /usr/lib64/libgobject-2.0.so.0
  • #35 g_signal_emit
    from /usr/lib64/libgobject-2.0.so.0
  • #36 ??
    from /usr/lib64/libgtk-x11-2.0.so.0
  • #37 g_object_run_dispose
    from /usr/lib64/libgobject-2.0.so.0
  • #38 close_handler
    at dialog-transfer.c line 1976
  • #39 gnc_close_gui_component
    at gnc-component-manager.c line 777
  • #40 gnc_close_gui_component_by_data
    at gnc-component-manager.c line 797
  • #41 gnc_xfer_dialog_response_cb
    at dialog-transfer.c line 1658
  • #42 g_cclosure_marshal_VOID(int0_t, void)
    from /usr/lib64/libgobject-2.0.so.0
  • #43 ??
    from /usr/lib64/libgobject-2.0.so.0
  • #44 g_signal_emit_valist
    from /usr/lib64/libgobject-2.0.so.0
  • #45 g_signal_emit
    from /usr/lib64/libgobject-2.0.so.0
  • #46 ??
    from /usr/lib64/libgobject-2.0.so.0
  • #47 g_signal_emit_valist
    from /usr/lib64/libgobject-2.0.so.0
  • #48 g_signal_emit
    from /usr/lib64/libgobject-2.0.so.0
  • #49 ??
    from /usr/lib64/libgtk-x11-2.0.so.0
  • #50 ??
    from /usr/lib64/libgtk-x11-2.0.so.0
  • #51 g_closure_invoke
    from /usr/lib64/libgobject-2.0.so.0
  • #52 ??
    from /usr/lib64/libgobject-2.0.so.0
  • #53 g_signal_emit_valist
    from /usr/lib64/libgobject-2.0.so.0
  • #54 g_signal_emit
    from /usr/lib64/libgobject-2.0.so.0
  • #55 ??
    from /usr/lib64/libgtk-x11-2.0.so.0
  • #56 gtk_propagate_event
    from /usr/lib64/libgtk-x11-2.0.so.0
  • #57 gtk_main_do_event
    from /usr/lib64/libgtk-x11-2.0.so.0
  • #58 ??
    from /usr/lib64/libgdk-x11-2.0.so.0
  • #59 g_main_context_dispatch
    from /usr/lib64/libglib-2.0.so.0
  • #60 ??
    from /usr/lib64/libglib-2.0.so.0
  • #61 g_main_loop_run
    from /usr/lib64/libglib-2.0.so.0
  • #62 gtk_main
    from /usr/lib64/libgtk-x11-2.0.so.0
  • #63 gnc_ui_start_event_loop
    at gnc-gnome-utils.c line 608
  • #64 inner_main
    at gnucash-bin.c line 621
  • #65 ??
    from /usr/lib64/libguile.so.17
  • #66 ??
    from /usr/lib64/libguile.so.17
  • #67 scm_c_catch
    from /usr/lib64/libguile.so.17
  • #68 scm_i_with_continuation_barrier
    from /usr/lib64/libguile.so.17
  • #69 scm_c_with_continuation_barrier
    from /usr/lib64/libguile.so.17
  • #70 scm_i_with_guile_and_parent
    from /usr/lib64/libguile.so.17
  • #71 scm_boot_guile
    from /usr/lib64/libguile.so.17
  • #72 main
    at gnucash-bin.c line 776

Comment 1 John Ralls 2014-11-03 18:24:51 UTC
(In reply to comment #0)
> Steps to reproduce: 
> 1. Open transfer dialog
> 2. Chose accounts to tralsfer from and to
> 3. Enter amount of money to transfer
> 4. Press OK
> 5. gnucash segfaults 
> 
> Frequency: Sometimes. When repeating just the same transfer after first crash
> the next does not happens. It just heppens sometimes. Not seen any
> dependencies.
> 
> According to https://bugzilla.gnome.org/show_bug.cgi?id=734833#c7 : 
> Currency is RUB(Russian rubble)

Interesting. Looks like it might depend on what control in the dialog has focus: What appears to be happening is that destroying the dialog object is firing the lose-focus event on the date selector, which will happen only if it had focus when the dialog exited, and that's calling the price-update function. The commodity objects at this point have been freed, so they're not valid, and attempting to dereference the private pointers segfaults.
Comment 2 Alex 2014-11-03 18:59:39 UTC
Maybe, at point 4 I hit Enter, not press OK. And yes, date selector is in focus when dialog closes. After entering money amount I hit TAB, which switches focus to next field (date selector).

So, full steps looks like: 

1. Open transfer dialog
2. Chose accounts to tralsfer from and to
3. Enter amount of money to transfer
4. Hit TAB to switch focus to date field
5. Hit Enter
6. gnucash segfaults
Comment 3 John Ralls 2014-12-21 20:56:17 UTC
Easy enough to fix. Unfortunately I didn't get enough bandwidth until after releasing 2.6.5, but it will be in 2.6.6 in March.
Comment 4 John Ralls 2018-06-29 23:35:53 UTC
GnuCash bug tracking has moved to a new Bugzilla host. This bug has been copied to https://bugs.gnucash.org/show_bug.cgi?id=739584. Please update any external references or bookmarks.