Gnucash 2.7.1 on Ubuntu 17.04 segfaults after file load

John Ralls jralls at ceridwen.us
Sun Nov 19 12:21:59 EST 2017


> On Nov 19, 2017, at 9:00 AM, Catscrash <catscrash at catscrash.de> wrote:
> 
> Hi,
> 
> after hijacking the Gnucash 2.7 on Windows thread (sorry about that),
> here follows a proper one:
> 
> Gnucash 2.7.1 segfaults after loading my gnucash file. Compiling and
> installing went just fine. After the start, it migrates my data files
> and tries to open it, but crashes.
> 
> Stacktrace:
> 
> /usr/local/bin/seg_wrapper.sh: Zeile 3:  9741 Speicherzugriffsfehler 
> (Speicherabzug geschrieben) "$@"
> Reading symbols from gnucash...done.
> [New LWP 9741]
> [New LWP 9743]
> [New LWP 9742]
> [New LWP 9835]
> [New LWP 9746]
> [New LWP 9744]
> [New LWP 9747]
> [New LWP 9745]
> [New LWP 9748]
> [Thread debugging using libthread_db enabled]
> Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
> Core was generated by `gnucash'.
> Program terminated with signal SIGSEGV, Segmentation fault.
> #0  0x00007f236621a124 in std::__cxx11::basic_string<char,
> std::char_traits<char>, std::allocator<char>
>> ::_Alloc_hider::_Alloc_hider (__a=..., __dat=<optimized out>,
> this=<optimized out>) at /usr/include/c++/6/bits/basic_string.h:110
> 110             : allocator_type(__a), _M_p(__dat) { }
> [Current thread is 1 (Thread 0x7f2366e30fc0 (LWP 9741))]
> #0  0x00007f236621a124 in std::__cxx11::basic_string<char,
> std::char_traits<char>, std::allocator<char>
>> ::_Alloc_hider::_Alloc_hider(char*, std::allocator<char> const&)
> (__a=..., __dat=<optimized out>, this=<optimized out>)
>     at /usr/include/c++/6/bits/basic_string.h:110
> #1  0x00007f236621a124 in std::__cxx11::basic_string<char,
> std::char_traits<char>, std::allocator<char>
>> ::basic_string(std::__cxx11::basic_string<char, std::char_traits<char>,
> std::allocator<char> > const&) (__str=..., this=0x7fffc5400e30)
>     at /usr/include/c++/6/bits/basic_string.h:399
> #2  0x00007f236621a124 in
> KvpFrameImpl::set(std::vector<std::__cxx11::basic_string<char,
> std::char_traits<char>, std::allocator<char> >,
> std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>,
> std::allocator<char> > > >, KvpValueImpl*)
> (this=this at entry=0x5599118cf760, path=std::vector of length 0, capacity
> 0, value=value at entry=0x5599118d5fb0) at kvp-frame.cpp:128
> #3  0x00007f236621a7a8 in KvpFrameImpl::set(char const*, KvpValueImpl*)
> (this=this at entry=0x5599118cf760, key=key at entry=0x5599118d4fe0 "/",
> value=value at entry=0x5599118d5fb0) at kvp-frame.cpp:91
> #4  0x00007f23633ad9e8 in dom_tree_to_kvp_frame_given(xmlNodePtr,
> KvpFrame*) (node=node at entry=0x559910ea42d0,
> frame=frame at entry=0x5599118cf760) at sixtp-dom-parsers.cpp:443
> #5  0x00007f23633adaf9 in dom_tree_to_kvp_frame(_xmlNode*)
> (node=0x559910ea42d0) at sixtp-dom-parsers.cpp:465
> #6  0x00007f23633adb56 in dom_tree_to_frame_kvp_value(xmlNodePtr)
> (node=<optimized out>) at sixtp-dom-parsers.cpp:339
> #7  0x00007f23633ad2fe in dom_tree_to_kvp_value(xmlNodePtr)
> (node=node at entry=0x559910ea42d0) at sixtp-dom-parsers.cpp:391
> #8  0x00007f23633ad9c0 in dom_tree_to_kvp_frame_given(xmlNodePtr,
> KvpFrame*) (node=<optimized out>, frame=0x5599118c7cb0) at
> sixtp-dom-parsers.cpp:429
> #9  0x00007f23633ae41a in gnc_xml_set_data (handlers=0x7f23635c7aa0
> <account_handlers_v2+192>, item=0x7fffc5401110, node=0x559910d17240,
> tag=0x559910e26370 "act:slots") at sixtp-dom-parsers.cpp:850
> #10 0x00007f23633ae41a in dom_tree_generic_parse(_xmlNode*,
> dom_tree_handler*, void*) (node=node at entry=0x559910e54680,
> handlers=handlers at entry=0x7f23635c79e0 <account_handlers_v2>,
> data=data at entry=0x7fffc5401110) at sixtp-dom-parsers.cpp:881
> #11 0x00007f236339288c in dom_tree_to_account(_xmlNode*, _QofBook*)
> (node=node at entry=0x559910e54680, book=book at entry=0x55990eae3060) at
> gnc-account-xml-v2.cpp:540
> #12 0x00007f236339292e in gnc_account_end_handler(gpointer, GSList*,
> GSList*, gpointer, gpointer, gpointer*, gchar const*)
> (data_for_children=0x559910e54680, data_from_children=<optimized out>,
> sibling_data=<optimized out>, parent_data=<optimized out>,
> global_data=0x7fffc5401410, result=<optimized out>, tag=0x559910e2efe0
> "gnc:account") at gnc-account-xml-v2.cpp:491
> #13 0x00007f23633b061c in sixtp_sax_end_handler(void*, unsigned char
> const*) (user_data=0x559910d0b520, name=0x559910d0ca63 "gnc:account") at
> sixtp.cpp:539
> #14 0x00007f236132f865 in  () at /usr/lib/x86_64-linux-gnu/libxml2.so.2
> #15 0x00007f23613360ab in xmlParseElement () at
> /usr/lib/x86_64-linux-gnu/libxml2.so.2
> #16 0x00007f2361335352 in xmlParseContent () at
> /usr/lib/x86_64-linux-gnu/libxml2.so.2
> #17 0x00007f2361335ca3 in xmlParseElement () at
> /usr/lib/x86_64-linux-gnu/libxml2.so.2
> #18 0x00007f2361335352 in xmlParseContent () at
> /usr/lib/x86_64-linux-gnu/libxml2.so.2
> #19 0x00007f2361335ca3 in xmlParseElement () at
> /usr/lib/x86_64-linux-gnu/libxml2.so.2
> #20 0x00007f236133662b in xmlParseDocument () at
> /usr/lib/x86_64-linux-gnu/libxml2.so.2
> #21 0x00007f23633b090d in sixtp_parse_file_common(sixtp*,
> xmlParserCtxtPtr, gpointer, gpointer, gpointer*)
> (sixtp=sixtp at entry=0x559910d03bf0, xml_context=0x559910d09e20,
> data_for_top_level=data_for_top_level at entry=0x0,
> global_data=global_data at entry=0x7fffc5401410,
> parse_result=parse_result at entry=0x7fffc5401408) at sixtp.cpp:717
> #22 0x00007f23633b0a4c in sixtp_parse_fd(sixtp*, _IO_FILE*, void*,
> void*, void**) (sixtp=sixtp at entry=0x559910d03bf0,
> fd=fd at entry=0x559910d07580,
> data_for_top_level=data_for_top_level at entry=0x0,
> global_data=global_data at entry=0x7fffc5401410,
> parse_result=parse_result at entry=0x7fffc5401408) at sixtp.cpp:793
> #23 0x00007f23633a407d in gnc_xml_parse_fd(sixtp*, _IO_FILE*, int
> (*)(char const*, void*, void*), void*, void*)
> (top_parser=top_parser at entry=0x559910d03bf0, fd=fd at entry=0x559910d07580,
> callback=callback at entry=0x7f23633a9a20 <generic_callback(char const*,
> gpointer, gpointer)>, parsedata=parsedata at entry=0x559910d038e0,
> bookdata=bookdata at entry=0x55990eae3060) at io-gncxml-gen.cpp:60
> #24 0x00007f23633a94f4 in
> qof_session_load_from_xml_file_v2_full(GncXmlBackend*, QofBook*,
> sixtp_push_handler, gpointer, QofBookFileType)
> (xml_be=xml_be at entry=0x55990ead9500, book=book at entry=0x55990eae3060,
> push_handler=push_handler at entry=0x0,
> push_user_data=push_user_data at entry=0x0,
> type=type at entry=GNC_BOOK_XML2_FILE) at io-gncxml-v2.cpp:809
> #25 0x00007f23633a9a9c in
> qof_session_load_from_xml_file_v2(GncXmlBackend*, _QofBook*,
> QofBookFileType) (xml_be=xml_be at entry=0x55990ead9500,
> book=book at entry=0x55990eae3060, type=type at entry=GNC_BOOK_XML2_FILE) at
> io-gncxml-v2.cpp:871
> ---Type <return> to continue, or q <return> to quit---
> #26 0x00007f23633a0160 in GncXmlBackend::load(_QofBook*,
> QofBackendLoadType) (this=0x55990ead9500, book=0x55990eae3060,
> loadType=<optimized out>) at gnc-xml-backend.cpp:252
> #27 0x00007f236624d754 in QofSessionImpl::load(void (*)(char const*,
> double)) (this=0x5599106916d0, percentage_func=<optimized out>) at
> qofsession.cpp:231
> #28 0x00007f2366783ce1 in gnc_post_file_open (filename=<optimized out>,
> is_readonly=0) at gnc-file.c:886
> #29 0x000055990ceac5b2 in inner_main (closure=<optimized out>,
> argc=<optimized out>, argv=<optimized out>) at gnucash-bin.c:649
> #30 0x00007f23659805a3 in  () at
> /usr/lib/x86_64-linux-gnu/libguile-2.0.so.22
> #31 0x00007f236594c2ac in  () at
> /usr/lib/x86_64-linux-gnu/libguile-2.0.so.22
> #32 0x00007f23659fc606 in  () at
> /usr/lib/x86_64-linux-gnu/libguile-2.0.so.22
> #33 0x00007f23659ce470 in  () at
> /usr/lib/x86_64-linux-gnu/libguile-2.0.so.22
> #34 0x00007f2365a06cc3 in  () at
> /usr/lib/x86_64-linux-gnu/libguile-2.0.so.22
> #35 0x00007f2365a276d8 in  () at
> /usr/lib/x86_64-linux-gnu/libguile-2.0.so.22
> #36 0x00007f2365956d7b in scm_call_4 () at
> /usr/lib/x86_64-linux-gnu/libguile-2.0.so.22
> #37 0x00007f23659fc45c in scm_catch_with_pre_unwind_handler () at
> /usr/lib/x86_64-linux-gnu/libguile-2.0.so.22
> #38 0x00007f23659fc6de in scm_c_catch () at
> /usr/lib/x86_64-linux-gnu/libguile-2.0.so.22
> #39 0x00007f236594c0fb in  () at
> /usr/lib/x86_64-linux-gnu/libguile-2.0.so.22
> #40 0x00007f236594c3c4 in scm_c_with_continuation_barrier () at
> /usr/lib/x86_64-linux-gnu/libguile-2.0.so.22
> #41 0x00007f23659f93ba in  () at
> /usr/lib/x86_64-linux-gnu/libguile-2.0.so.22
> #42 0x00007f23605c3c42 in GC_call_with_stack_base () at
> /usr/lib/x86_64-linux-gnu/libgc.so.1
> #43 0x00007f23659f94a3 in  () at
> /usr/lib/x86_64-linux-gnu/libguile-2.0.so.22
> #44 0x00007f23659f94e3 in scm_with_guile () at
> /usr/lib/x86_64-linux-gnu/libguile-2.0.so.22
> #45 0x00007f2365980534 in scm_boot_guile () at
> /usr/lib/x86_64-linux-gnu/libguile-2.0.so.22
> #46 0x000055990ceac080 in main (argc=<optimized out>, argv=<optimized
> out>) at gnucash-bin.c:820
> seg_wrapper.sh gnucash  7,46s user 0,23s system 59% cpu 12,925 total
> 

Looks like https://bugzilla.gnome.org/show_bug.cgi?id=761682, see frame #3.

Regards,
John Ralls




More information about the gnucash-user mailing list