Master - saving to xml broken

Geert Janssens geert.gnucash at kobaltwit.be
Fri Dec 2 12:04:39 EST 2016


Op vrijdag 2 december 2016 08:50:30 CET schreef John Ralls:
> > On Dec 2, 2016, at 8:38 AM, Geert Janssens <geert.gnucash at kobaltwit.be>
> > wrote:> 
> > Op vrijdag 2 december 2016 17:20:13 CET schreef Geert Janssens:
> >> Here's my scenario:
> >> 
> >> - start gnucash
> >> - create new file
> >> - go through the assistant, simply by clicking forward everywhere
> >> - save the file
> >> - add one vendor
> >> - save the file
> >> - restart gnucash
> >> 
> >> => error as described earlier
> >> 
> >> Checking my data file, it does indeed have the vendor stored twice. I'm
> >> currently doing a full clean rebuild of gnucash master (freshly checked
> >> out
> >> from github). I'll report my findings when the build finishes.
> >> 
> >> Geert
> > 
> > Ok, clean rebuild of current master. Things are even worse. Same steps as
> > above.
> > 
> > After the assistant finishes, I'm offered a save dialog. I'm entering a
> > new
> > file name (of a non-existent file). A second dialog window pops up telling
> > me the file is already open and asks whether I want to save over it. At
> > the same time this message is printed in the logs:
> > * 17:30:49  WARN <gnc.backend> [GncXmlBackend::session_begin()] Might
> > clobber, no force
> > 
> > I tell gnucash to overwrite and the save dialog closes. The window title
> > is
> > changed to *Double.gnucash (I chose "Double" as file name).
> > This suggests the file is not saved yet. Looking on the file system it's
> > not there indeed. But the lock files are.
> > 
> > Closing gnucash it asks me again whether I want to save the file. I'm
> > telling it to save. Immediately a second dialog pops up warning me the
> > changes of the last x minutes will be lost if I close without saving.
> > 
> > I chose again to save, the same dialog appears again and will continue to
> > do so until I choose to close without saving. At that point gnucash
> > segfaults.
> > 
> > There's no file on my file system with the name Double.gnucash.
> > 
> > There is also no other version of gnucash or its libraries on the path.
> 
> This is likely two separate problems since your earlier build was before my
> recent merge of c++-backend (which touched the XML backend) and the current
> behavior is after  it.
> 
> Regards,
> John Ralls

Yes I think so too.

Just for reference here's the backtrace from the reproducible segfault:
#0  0x00007ffff1de805a in qof_book_is_readonly(QofBook const*) (book=0xd0) at 
/kobaltnet/janssege-development/gnucash/gnucash-master-remote/src/libqof/qof/
qofbook.cpp:587
#1  0x00007ffff3241542 in GncXmlBackend::session_end() (this=0x2eaf5c0) at /
kobaltnet/janssege-development/gnucash/gnucash-master-remote/src/backend/xml/
gnc-xml-backend.cpp:172
#2  0x00007ffff1dfb020 in QofSessionImpl::end() (this=0x2cda220) at /
kobaltnet/janssege-development/gnucash/gnucash-master-remote/src/libqof/qof/
qofsession.cpp:349
#3  0x00007ffff1df9dc5 in QofSessionImpl::~QofSessionImpl() (this=0x2cda220, 
__in_chrg=<optimized out>) at /kobaltnet/janssege-development/gnucash/gnucash-
master-remote/src/libqof/qof/qofsession.cpp:134
#4  0x00007ffff1df9e9c in qof_session_destroy(QofSession*) (session=0x2cda220) 
at /kobaltnet/janssege-development/gnucash/gnucash-master-remote/src/libqof/
qof/qofsession.cpp:145
#5  0x00007ffff251bf42 in gnc_clear_current_session () at /kobaltnet/janssege-
development/gnucash/gnucash-master-remote/src/engine/gnc-session.c:65
#6  0x00007ffff6533fdd in gnc_file_quit () at /kobaltnet/janssege-development/
gnucash/gnucash-master-remote/src/gnome-utils/gnc-file.c:1609
#7  0x00007ffff2512cbb in call_c_hook (hook=0x2b0bcc0, data=0x0) at /
kobaltnet/janssege-development/gnucash/gnucash-master-remote/src/engine/gnc-
hooks.c:217
#8  0x00007fffee5c08e4 in g_hook_list_marshal () at /lib64/libglib-2.0.so.0
#9  0x00007ffff2512e2f in gnc_hook_run (name=0x7ffff65b2049 
"hook_ui_shutdown", data=0x0) at /kobaltnet/janssege-development/gnucash/
gnucash-master-remote/src/engine/gnc-hooks.c:233
#10 0x00007ffff6538eaf in gnc_shutdown (exit_status=0) at /kobaltnet/janssege-
development/gnucash/gnucash-master-remote/src/gnome-utils/gnc-gnome-utils.c:
786
#11 0x00007ffff653d861 in gnc_main_window_timed_quit (dummy=0x0) at /
kobaltnet/janssege-development/gnucash/gnucash-master-remote/src/gnome-utils/
gnc-main-window.c:1338
#12 0x00007fffee5d088d in g_timeout_dispatch () at /lib64/libglib-2.0.so.0
#13 0x00007fffee5cfe42 in g_main_context_dispatch () at /lib64/libglib-2.0.so.
0
#14 0x00007fffee5d01c0 in g_main_context_iterate.isra () at /lib64/
libglib-2.0.so.0
#15 0x00007fffee5d04e2 in g_main_loop_run () at /lib64/libglib-2.0.so.0
#16 0x00007ffff0061267 in IA__gtk_main () at gtkmain.c:1268
#17 0x00007ffff6538a4f in gnc_ui_start_event_loop () at /kobaltnet/janssege-
development/gnucash/gnucash-master-remote/src/gnome-utils/gnc-gnome-utils.c:
622
#18 0x000000000040582d in inner_main (closure=0x0, argc=1, 
argv=0x7fffffffd888) at /kobaltnet/janssege-development/gnucash/gnucash-
master-remote/src/bin/gnucash-bin.c:671
#19 0x00007ffff0d8743d in invoke_main_func (body_data=0x7fffffffd700) at 
init.c:341
#20 0x00007ffff0d5fb1a in c_body (d=0x7fffffffd640) at continuations.c:517
#21 0x00007ffff0df9696 in vm_regular_engine (vm=0xd0, program=0x7fffedd88ae8 
<main_arena+8>, argv=0x7fffffffd520, nargs=11636920) at vm-i-system.c:858
#22 0x00007ffff0d69913 in scm_call_4 (proc=0xbf5c00, arg1=arg1 at entry=0x404, 
arg2=<optimized out>, arg3=<optimized out>, arg4=<optimized out>) at eval.c:
507
#23 0x00007ffff0de3409 in scm_catch_with_pre_unwind_handler 
(key=key at entry=0x404, thunk=<optimized out>, handler=<optimized out>, 
pre_unwind_handler=<optimized out>) at throw.c:73
#24 0x00007ffff0de350f in scm_c_catch (tag=tag at entry=0x404, 
body=body at entry=0x7ffff0d5fb10 <c_body>, 
body_data=body_data at entry=0x7fffffffd640, handler=handler at entry=0x7ffff0d5ff10 
<c_handler>, handler_data=handler_data at entry=0x7fffffffd640, 
pre_unwind_handler=pre_unwind_handler at entry=0x7ffff0d5fca0 
<pre_unwind_handler>, pre_unwind_handler_data=0xb17e20) at throw.c:207
#25 0x00007ffff0d602c1 in scm_i_with_continuation_barrier 
(body=body at entry=0x7ffff0d5fb10 <c_body>, 
body_data=body_data at entry=0x7fffffffd640, handler=handler at entry=0x7ffff0d5ff10 
<c_handler>, handler_data=handler_data at entry=0x7fffffffd640, 
pre_unwind_handler=pre_unwind_handler at entry=0x7ffff0d5fca0 
<pre_unwind_handler>, pre_unwind_handler_data=0xb17e20) at continuations.c:455
#26 0x00007ffff0d603a5 in scm_c_with_continuation_barrier (func=<optimized 
out>, data=<optimized out>) at continuations.c:551
#27 0x00007ffff0de0afc in with_guile_and_parent 
(base=base at entry=0x7fffffffd6a0, data=data at entry=0x7fffffffd6d0) at threads.c:
906
#28 0x00007ffff09c0352 in GC_call_with_stack_base (fn=fn at entry=0x7ffff0de0ab0 
<with_guile_and_parent>, arg=arg at entry=0x7fffffffd6d0) at misc.c:1845
#29 0x00007ffff0de0f28 in scm_i_with_guile_and_parent (parent=<optimized out>, 
data=0x7fffffffd6d0, func=0x7ffff0d87420 <invoke_main_func>) at threads.c:949
#30 0x00007ffff0de0f28 in scm_with_guile (func=func at entry=0x7ffff0d87420 
<invoke_main_func>, data=data at entry=0x7fffffffd700) at threads.c:955
#31 0x00007ffff0d87632 in scm_boot_guile (argc=1, argv=0x7fffffffd888, 
main_func=0x4056b8 <inner_main>, closure=0x0) at init.c:324
#32 0x0000000000405c6e in main (argc=1, argv=0x7fffffffd888) at /kobaltnet/
janssege-development/gnucash/gnucash-master-remote/src/bin/gnucash-bin.c:826

Probably a side effect of the save failing in the first place, causing the 
code to follow a path is normally never would.

Geert



More information about the gnucash-devel mailing list