SIGSEGV in deleting transactions (2.7.3)

John Ralls jralls at ceridwen.us
Sun Jan 21 16:08:28 EST 2018


I sure hope it's deleting all of the splits in a transaction. Be sure to mention that in your bug report.

Regards,
John Ralls

> On Jan 21, 2018, at 1:03 PM, Fabio Coatti <fabio.coatti at gmail.com> wrote:
> 
> Sry, the dialog option I was referring to is the one that appears when you delete a transaction, asking if you want to delete, delete and don't be asked again or deleted and don't asked again in the current session. Anyway, this proved to be wrong, I simply deleted transactions that were  ok (no bug triggering) for three times in a row and when I selected "don't remind me again" I was working on a "bad" transaction. A unlucky pick.
> I'm going to open a bug, thanks for the hint. Maybe this situation could be caused by having deleted one account with all his transactions. I was assuming that both splits were going to be deleted but I get that my assumption was wrong.
> 
> Il giorno dom 21 gen 2018 alle ore 21:37 John Ralls <jralls at ceridwen.us> ha scritto:
> Don't remind me of *what*?
> 
> Anyway, the problem is obvious from the first tow stack frames: You've deleted the transaction out from under one of the business pages (can't tell from the backtrace which one and it probably doesn't matter) and so there's no primary transaction. xaccTransCountSplits doesn't protect itself from being called with a null transaction (it should) and gnc_plugin_business_update_menus doesn't check that it got a transaction before calling it (it should), so boom.
> 
> Please file a bug report so that we don't forget. Thanks.
> 
> Regards,
> John Ralls
> 
> > On Jan 21, 2018, at 12:16 PM, Fabio Coatti <fabio.coatti at gmail.com> wrote:
> >
> > Another bit of information: I can see this issue when I tick "don't remind
> > me again in this session" option. If I leave it unticked, the crash does
> > not happen.
> >
> > Il giorno dom 21 gen 2018 alle ore 20:16 Fabio Coatti <
> > fabio.coatti at gmail.com> ha scritto:
> >
> >> Hi All,
> >> I'm testing out gnucash 2.7.3 (nice step from 2.6.x, BTW, thanks) and I
> >> very often get a SIGSEGV when deleting transaction, albeit not all the
> >> times.
> >> I tried to get a core and a backtrack, but probably I still have too many
> >> optimizations active.
> >> In any case, this is what I got; if you want a specific
> >> testing/compilation option just let me know, I'll try to do what I can.
> >>
> >> Program terminated with signal SIGSEGV, Segmentation fault.
> >> #0  xaccTransCountSplits (trans=trans at entry=0x0) at Transaction.c:2318
> >> 2318        FOR_EACH_SPLIT(trans, i++);
> >> [Current thread is 1 (LWP 15888)]
> >>
> >> (gdb) bt
> >> #0  xaccTransCountSplits (trans=trans at entry=0x0) at Transaction.c:2318
> >> #1  0x00007ea1fbf46473 in gnc_plugin_business_update_menus
> >> (plugin_page=<optimized out>) at gnc-plugin-business.c:926
> >> #2  0x00007ea1fbf466bc in gnc_plugin_business_main_window_page_changed
> >> (window=<optimized out>, page=0x57bb548b19e0, user_data=<optimized out>) at
> >> gnc-plugin-business.c:946
> >> #3  0x00007ea1f9f71555 in g_closure_invoke () from
> >> /usr/lib64/libgobject-2.0.so.0
> >> #4  0x00007ea1f9f5de43 in ?? () from /usr/lib64/libgobject-2.0.so.0
> >> #5  0x00007ea1f9f61f55 in g_signal_emit_valist () from
> >> /usr/lib64/libgobject-2.0.so.0
> >> #6  0x00007ea1f9f62eb8 in g_signal_emit_by_name () from
> >> /usr/lib64/libgobject-2.0.so.0
> >> #7  0x00007ea1fbc28656 in gnc_main_window_generate_title
> >> (window=window at entry=0x57bb507d43a0) at gnc-main-window.c:1536
> >> #8  0x00007ea1fbc287ae in gnc_main_window_update_title
> >> (window=0x57bb507d43a0) at gnc-main-window.c:1558
> >> #9  0x00007ea1f9c93add in g_list_foreach () from
> >> /usr/lib64/libglib-2.0.so.0
> >> #10 0x00007ea1fbc277c0 in gnc_main_window_update_all_titles () at
> >> gnc-main-window.c:1566
> >> #11 gnc_main_window_book_dirty_cb (book=0x57bb525f0c80, dirty=1,
> >> user_data=<optimized out>) at gnc-main-window.c:1576
> >> #12 0x00007ea1fb6dd752 in qof_commit_edit_part2 (inst=0x57bb54071a70,
> >> on_error=on_error at entry=0x7ea1fb60c0a0 <commit_err>, on_done=on_done at entry=0x0,
> >> on_free=on_free at entry=0x7ea1fb60bed0 <xaccFreeSplit>) at
> >> qofinstance.cpp:1011
> >> #13 0x00007ea1fb60e13a in xaccSplitCommitEdit (s=0x57bb54071a70) at
> >> Split.c:1004
> >> #14 0x00007ea1fb614645 in do_destroy (trans=0x57bb52c4b700) at
> >> Transaction.c:1531
> >> #15 0x00007ea1fb6dd6ef in qof_commit_edit_part2 (inst=0x57bb52c4b700,
> >> on_error=on_error at entry=0x7ea1fb614c10 <trans_on_error>,
> >> on_done=on_done at entry=0x7ea1fb611b60 <trans_cleanup_commit>,
> >> on_free=on_free at entry=0x7ea1fb6145a0 <do_destroy>)
> >>   at qofinstance.cpp:1048
> >> #16 0x00007ea1fb613e9a in xaccTransCommitEdit (trans=0x57bb52c4b700) at
> >> Transaction.c:1692
> >> #17 0x00007ea1f942ae87 in gnc_split_register_delete_current_trans
> >> (reg=<optimized out>) at split-register.c:1140
> >> #18 0x00007ea1fbf58922 in gnc_plugin_page_register_cmd_delete_transaction
> >> (action=0x57bb54b03630, plugin_page=0x57bb548b19e0) at
> >> gnc-plugin-page-register.c:3575
> >> #19 0x00007ea1f9f71555 in g_closure_invoke () from
> >> /usr/lib64/libgobject-2.0.so.0
> >> #20 0x00007ea1f9f5de43 in ?? () from /usr/lib64/libgobject-2.0.so.0
> >> #21 0x00007ea1f9f61f55 in g_signal_emit_valist () from
> >> /usr/lib64/libgobject-2.0.so.0
> >> #22 0x00007ea1f9f631a7 in g_signal_emit () from
> >> /usr/lib64/libgobject-2.0.so.0
> >> #23 0x00007ea1fa8a905a in ?? () from /usr/lib64/libgtk-3.so.0
> >> #24 0x00007ea1fa662789 in ?? () from /usr/lib64/libgtk-3.so.0
> >> #25 0x00007ea1f9f624bd in g_signal_emit_valist () from
> >> /usr/lib64/libgobject-2.0.so.0
> >> #26 0x00007ea1f9f631a7 in g_signal_emit () from
> >> /usr/lib64/libgobject-2.0.so.0
> >> #27 0x00007ea1fa7f8d75 in ?? () from /usr/lib64/libgtk-3.so.0
> >> #28 0x00007ea1fa7f8e45 in ?? () from /usr/lib64/libgtk-3.so.0
> >> #29 0x00007ea1f9f71555 in g_closure_invoke () from
> >> /usr/lib64/libgobject-2.0.so.0
> >> #30 0x00007ea1f9f5df1b in ?? () from /usr/lib64/libgobject-2.0.so.0
> >> #31 0x00007ea1f9f61f55 in g_signal_emit_valist () from
> >> /usr/lib64/libgobject-2.0.so.0
> >> #32 0x00007ea1f9f631a7 in g_signal_emit () from
> >> /usr/lib64/libgobject-2.0.so.0
> >> #33 0x00007ea1fa7f7360 in ?? () from /usr/lib64/libgtk-3.so.0
> >> #34 0x00007ea1f5e670e2 in ffi_call_unix64 () from /usr/lib64/libffi.so.6
> >> #35 0x00007ea1f5e63e8c in ffi_call () from /usr/lib64/libffi.so.6
> >> #36 0x00007ea1f9f7a35d in g_cclosure_marshal_generic_va () from
> >> /usr/lib64/libgobject-2.0.so.0
> >> #37 0x00007ea1f9f624bd in g_signal_emit_valist () from
> >> /usr/lib64/libgobject-2.0.so.0
> >> #38 0x00007ea1f9f631a7 in g_signal_emit () from
> >> /usr/lib64/libgobject-2.0.so.0
> >> #39 0x00007ea1fa7a42b1 in ?? () from /usr/lib64/libgtk-3.so.0
> >> #40 0x00007ea1f9f7a019 in g_cclosure_marshal_VOID__BOXEDv () from
> >> /usr/lib64/libgobject-2.0.so.0
> >> #41 0x00007ea1f9f624bd in g_signal_emit_valist () from
> >> /usr/lib64/libgobject-2.0.so.0
> >> #42 0x00007ea1f9f631a7 in g_signal_emit () from
> >> /usr/lib64/libgobject-2.0.so.0
> >> #43 0x00007ea1fa79ae4e in ?? () from /usr/lib64/libgtk-3.so.0
> >> #44 0x00007ea1fa7a5d8b in ?? () from /usr/lib64/libgtk-3.so.0
> >> #45 0x00007ea1fa7a398a in ?? () from /usr/lib64/libgtk-3.so.0
> >> #46 0x00007ea1fa834e11 in gtk_event_controller_handle_event () from
> >> /usr/lib64/libgtk-3.so.0
> >> #47 0x00007ea1fa5cdbab in ?? () from /usr/lib64/libgtk-3.so.0
> >> #48 0x00007ea1fa717068 in ?? () from /usr/lib64/libgtk-3.so.0
> >> #49 0x00007ea1f9f624bd in g_signal_emit_valist () from
> >> /usr/lib64/libgobject-2.0.so.0
> >> #50 0x00007ea1f9f631a7 in g_signal_emit () from
> >> /usr/lib64/libgobject-2.0.so.0
> >> #51 0x00007ea1fa5cdd2c in ?? () from /usr/lib64/libgtk-3.so.0
> >> #52 0x00007ea1fa71f57e in ?? () from /usr/lib64/libgtk-3.so.0
> >> #53 0x00007ea1fa722628 in gtk_main_do_event () from
> >> /usr/lib64/libgtk-3.so.0
> >> #54 0x00007ea1f82b1933 in ?? () from /usr/lib64/libgdk-3.so.0
> >> #55 0x00007ea1f82cf0c2 in ?? () from /usr/lib64/libgdk-3.so.0
> >> #56 0x00007ea1f9c987ff in g_main_context_dispatch () from
> >> /usr/lib64/libglib-2.0.so.0
> >> #57 0x00007ea1f9c9a418 in ?? () from /usr/lib64/libglib-2.0.so.0
> >> #58 0x00007ea1f9c9b382 in g_main_loop_run () from
> >> /usr/lib64/libglib-2.0.so.0
> >> #59 0x00007ea1fa71966d in gtk_main () from /usr/lib64/libgtk-3.so.0
> >> #60 0x00007ea1fbc2438d in gnc_ui_start_event_loop () at
> >> gnc-gnome-utils.c:652
> >> #61 0x000057bb4ea7dab8 in inner_main (closure=<optimized out>,
> >> argc=<optimized out>, argv=<optimized out>) at gnucash-bin.c:675
> >> #62 0x00007ea1faed072c in ?? () from /usr/lib64/libguile-2.2.so.1
> >> #63 0x00007ea1fae6871a in ?? () from /usr/lib64/libguile-2.2.so.1
> >> #64 0x00007ea1fae63a85 in ?? () from /usr/lib64/libguile-2.2.so.1
> >> #65 0x00007ea1faf032ca in scm_call_n () from /usr/lib64/libguile-2.2.so.1
> >> #66 0x00007ea1fae663ba in ?? () from /usr/lib64/libguile-2.2.so.1
> >> #67 0x00007ea1fae71540 in ?? () from /usr/lib64/libguile-2.2.so.1
> >> #68 0x00007ea1fae71855 in scm_c_with_continuation_barrier () from
> >> /usr/lib64/libguile-2.2.so.1
> >> #69 0x00007ea1fae671fc in ?? () from /usr/lib64/libguile-2.2.so.1
> >> #70 0x00007ea1f607b415 in GC_call_with_stack_base () from
> >> /usr/lib64/libgc.so.2
> >> #71 0x00007ea1fae5e4d8 in scm_with_guile () from
> >> /usr/lib64/libguile-2.2.so.1
> >> #72 0x00007ea1faeced25 in scm_boot_guile () from
> >> /usr/lib64/libguile-2.2.so.1
> >> #73 0x000057bb4ea7d3a0 in main (argc=<optimized out>, argv=<optimized
> >> out>) at gnucash-bin.c:819
> >>
> >>
> >> (compiler: gcc 7.2.0)
> >>
> >>
> >>
> >> --
> >> --
> >> Fabio
> >>
> >
> >
> > --
> > --
> > Fabio
> > _______________________________________________
> > gnucash-devel mailing list
> > gnucash-devel at gnucash.org
> > https://lists.gnucash.org/mailman/listinfo/gnucash-devel
> 
> 
> 
> -- 
> --
> Fabio



More information about the gnucash-devel mailing list