gnucash dumps core

Donald Allen donaldcallen at gmail.com
Sun May 3 20:53:41 EDT 2009


On Sat, May 2, 2009 at 6:33 PM, Marc Evans <marc at softwarehackery.com> wrote:

> Hello all,
>
> Thank you both for your feedback. I chose a slightly different solution
> which appears to work. Specifically, I modified the ports collection to
> use version 2.2.9 of the sources. I have cc'ed the listed ports
> maintainer so that he might update the port to 2.2.9 so that others
> don't encounter the issue that I did.


This turns out to be a fairly bizarre coincidence, your starting this thread
when you did.

First of all, what I said earlier was true, but it wasn't going to fix your
problem. Some time ago, 2.2.7 started segfaulting on one of my systems after
updating ports it depends on, but I subsequently reinstalled FreeBSD on that
machine for other reasons, so never attempted to diagnose the seg-faults. On
the newly installed system, I pkg_add'ed the 2.2.6 and then upgraded to
2.2.7 with portmaster and 2.2.7 worked, displaying registers without a
problem. But read on to learn why.

Last night and today, I did a major upgrade of the ports on that same
system, mostly to get to the latest version of xorg. After doing so, all the
packages/ports I had installed on the system worked, save gnucash. Just
rebuilding with portmaster was no help this time. I ran it under gdb after
building with -g, as you did, and the backtrace clearly indicated I was
encountering the bug that Charles mentioned earlier and that bit you as
well. I fixed it by installing Jonathan Kamens' patch. If you read his
explanation of the problem, 2.2.7 gets away with its bug up to a certain
version of glib2, by luck. The 7.1 Release installs an early enough version
of the library so 2.2.7 works. The upgrade I did last night and today
upgraded glib2 beyond the version 2.2.7's luck runs out and it seg-faults
when you try to open a register.

So my earlier messages, while true, weren't going to help you, as you
apparently had updated your glib2 as well. Charles' advice was correct and I
followed it myself to ultimately solve this problem.

/Don

>
>
> - Marc
>
> Donald Allen wrote:
> >
> >
> > On Sat, May 2, 2009 at 5:32 PM, Charles Day <cedayiv at gmail.com
> > <mailto:cedayiv at gmail.com>> wrote:
> >
> >     This is a known problem in 2.2.7 which was fixed for 2.2.8. However,
> >     there
> >     is a patch available for 2.2.7. Search the April mail archives for a
> >     thread
> >     named "Segmentation fault".
> >
> >
> > I have seen this problem with 2.2.7 on FreeBSD 7.1 and the problem was
> > as I described in my first message. If you build 2.2.7 correctly (which
> > is the latest version available in the ports library), it works properly
> > on FreeBSD.
> >
> > /Don
> >
> >
> >
> >
> >
> >     -Charles
> >
> >
> >     On Sat, May 2, 2009 at 2:09 PM, Marc Evans <marc at softwarehackery.com
> >     <mailto:marc at softwarehackery.com>> wrote:
> >
> >     > Hi,
> >     >
> >     > I recently updated gnucash from 2.2.6 to 2.2.7 on FreeBSD-6.1. Now
> >     when
> >     > I run it, it will core dump when I try double click on an account
> >     in the
> >     > Assets list. I rebuilt with -g so that I could gain some
> information
> >     > about the situation and found that the issue is a NULL pointer
> >     > dereference at line 177 of gnucash-style.c, as shown here:
> >     >
> >     >                                cd->can_span_over = FALSE;
> >     >
> >     > cd is NULL. looking further up in the code I see:
> >     >
> >     >                        cd = g_table_index
> >     (dimensions->cell_dimensions,
> >     >                                            row, col);
> >     >
> >     > so I looked at the argument to the function call but am not seeing
> >     > anything suspicious:
> >     >
> >     > (gdb) p *dimensions
> >     > $1 = {nrows = 1, ncols = 9, height = 17, width = 680,
> >     >  cell_dimensions = 0x9814720, refcount = 6}
> >     > (gdb) p row
> >     > $2 = 1
> >     > (gdb) p col
> >     > $3 = 1
> >     > (gdb) p *(dimensions->cell_dimensions)
> >     > $4 = {array = 0x3, entry_size = 8, rows = 147190083, cols = 0,
> >     >  constructor = 0x1b, destroyer = 0x8, user_data = 0x8c5f14c}
> >     >
> >     > The full stack trace shows:
> >     >
> >     > (gdb) where
> >     > #0  0x28203df1 in set_dimensions_pass_one (sheet=0xa4a60a8,
> >     > cursor=0x969f9f0,
> >     >    dimensions=0x9814700) at gnucash-style.c:177
> >     > #1  0x282046b8 in styles_recompute_layout_dimensions
> (sheet=0xa4a60a8,
> >     >    default_width=680) at gnucash-style.c:493
> >     > #2  0x282047aa in gnucash_sheet_styles_set_dimensions
> >     (sheet=0xa4a60a8,
> >     >    default_width=680) at gnucash-style.c:506
> >     > #3  0x28204fb4 in gnucash_sheet_compile_styles (sheet=0xa4a60a8)
> >     >    at gnucash-style.c:668
> >     > #4  0x282064a1 in gnc_table_init_gui (widget=0x80811c8,
> >     data=0x8185640)
> >     >    at table-gnome.c:189
> >     > #5  0x281a9a72 in gsr_create_table (gsr=0x83381a0) at
> >     gnc-split-reg.c:387
> >     > #6  0x281a9935 in gnc_split_reg_init2 (gsr=0x83381a0) at
> >     > gnc-split-reg.c:353
> >     > #7  0x281a9837 in gnc_split_reg_new (ld=0xa043380,
> parent=0x82a1008,
> >     >    numberOfLines=10, read_only=0) at gnc-split-reg.c:325
> >     > #8  0x281a0c94 in gnc_plugin_page_register_create_widget (
> >     >    plugin_page=0xa38a858) at gnc-plugin-page-register.c:727
> >     > #9  0x282c411c in gnc_plugin_page_create_widget
> >     (plugin_page=0xa38a858)
> >     >    at gnc-plugin-page.c:151
> >     > #10 0x282ba449 in gnc_main_window_open_page (window=0x82a1008,
> >     > page=0xa38a858)
> >     >    at gnc-main-window.c:2211
> >     > #11 0x28198696 in gppat_open_account_common (page=0x8350868,
> >     >    account=0x83464e8, include_subs=0) at
> >     gnc-plugin-page-account-tree.c:672
> >     > #12 0x2819875f in gnc_plugin_page_account_tree_double_click_cb (
> >     >    treeview=0x82ba000, path=0x91faee8, col=0x8188c48,
> page=0x8350868)
> >     >    at gnc-plugin-page-account-tree.c:685
> >     > #13 0x28c01330 in gtk_marshal_VOID__UINT_STRING ()
> >     >   from /usr/local/lib/libgtk-x11-2.0.so.0
> >     > #14 0x293e69b9 in g_closure_invoke () from
> >     > /usr/local/lib/libgobject-2.0.so.0
> >     > #15 0x293fabbe in g_signal_has_handler_pending ()
> >     >   from /usr/local/lib/libgobject-2.0.so.0
> >     > #16 0x293fba48 in g_signal_emit_valist ()
> >     >   from /usr/local/lib/libgobject-2.0.so.0
> >     > #17 0x293fbc8c in g_signal_emit () from
> >     /usr/local/lib/libgobject-2.0.so.0
> >     > #18 0x28cd2727 in gtk_tree_view_row_activated ()
> >     >   from /usr/local/lib/libgtk-x11-2.0.so.0
> >     > #19 0x28ce4685 in gtk_tree_view_set_model ()
> >     >   from /usr/local/lib/libgtk-x11-2.0.so.0
> >     > #20 0x28bffd82 in gtk_marshal_VOID__UINT_STRING ()
> >     >   from /usr/local/lib/libgtk-x11-2.0.so.0
> >     > #21 0x293e6c65 in g_cclosure_new_swap ()
> >     >   from /usr/local/lib/libgobject-2.0.so.0
> >     > #22 0x293e69b9 in g_closure_invoke () from
> >     > /usr/local/lib/libgobject-2.0.so.0
> >     > #23 0x293fa720 in g_signal_has_handler_pending ()
> >     >   from /usr/local/lib/libgobject-2.0.so.0
> >     > #24 0x293fb7b5 in g_signal_emit_valist ()
> >     >   from /usr/local/lib/libgobject-2.0.so.0
> >     > #25 0x293fbc8c in g_signal_emit () from
> >     /usr/local/lib/libgobject-2.0.so.0
> >     > #26 0x28cf6dd0 in gtk_widget_activate ()
> >     >   from /usr/local/lib/libgtk-x11-2.0.so.0
> >     > #27 0x28bfe6c3 in gtk_propagate_event ()
> >     >   from /usr/local/lib/libgtk-x11-2.0.so.0
> >     > #28 0x28bfe94b in gtk_main_do_event () from
> >     > /usr/local/lib/libgtk-x11-2.0.so.0
> >     > #29 0x28e7cada in gdk_event_get_graphics_expose ()
> >     >   from /usr/local/lib/libgdk-x11-2.0.so.0
> >     > #30 0x29449b8f in g_main_context_dispatch ()
> >     >   from /usr/local/lib/libglib-2.0.so.0
> >     > #31 0x2944b490 in g_main_context_acquire ()
> >     >   from /usr/local/lib/libglib-2.0.so.0
> >     > #32 0x2944b6ec in g_main_loop_run () from
> >     /usr/local/lib/libglib-2.0.so.0
> >     > #33 0x28bfde6b in gtk_main () from
> /usr/local/lib/libgtk-x11-2.0.so.0
> >     > #34 0x282af7db in gnc_ui_start_event_loop () at
> gnc-gnome-utils.c:450
> >     > #35 0x0804cfcc in _start ()
> >     > #36 0x29323710 in invoke_main_func () from
> >     /usr/local/lib/libguile.so.20
> >     > #37 0x292fcbf7 in c_body () from /usr/local/lib/libguile.so.20
> >     > #38 0x2935c68a in scm_c_catch () from /usr/local/lib/libguile.so.20
> >     > #39 0x292fcbd1 in scm_i_with_continuation_barrier ()
> >     >   from /usr/local/lib/libguile.so.20
> >     > #40 0x292fcc57 in scm_c_with_continuation_barrier ()
> >     >   from /usr/local/lib/libguile.so.20
> >     > #41 0x2935a8ec in scm_i_with_guile_and_parent ()
> >     >   from /usr/local/lib/libguile.so.20
> >     > #42 0x2935a934 in scm_with_guile () from
> /usr/local/lib/libguile.so.20
> >     > #43 0x293236c3 in scm_boot_guile () from
> /usr/local/lib/libguile.so.20
> >     > #44 0x0804d37c in main ()
> >     >
> >     > This is within thread 3. The other two threads appear to be
> awaiting
> >     > wakeup.
> >     >
> >     > Has anyone else seen this and/or have known solutions?
> >     >
> >     > Thanks in advance - Marc
> >     > _______________________________________________
> >     > gnucash-user mailing list
> >     > gnucash-user at gnucash.org <mailto:gnucash-user at gnucash.org>
> >     > https://lists.gnucash.org/mailman/listinfo/gnucash-user
> >     > -----
> >     > Please remember to CC this list on all your replies.
> >     > You can do this by using Reply-To-List or Reply-All.
> >     >
> >     _______________________________________________
> >     gnucash-user mailing list
> >     gnucash-user at gnucash.org <mailto:gnucash-user at gnucash.org>
> >     https://lists.gnucash.org/mailman/listinfo/gnucash-user
> >     -----
> >     Please remember to CC this list on all your replies.
> >     You can do this by using Reply-To-List or Reply-All.
> >
> >
>


More information about the gnucash-user mailing list