> On Jul 5, 2015, at 10:27 PM, John Ralls <jra...@ceridwen.us> wrote: > > >> On Jul 5, 2015, at 6:43 PM, Alex Aycinena <alex.aycin...@gmail.com> wrote: >> >> Program received signal SIGSEGV, Segmentation fault. >> 0x00007ffff2025cf2 in std::_Rb_tree<char const*, std::pair<char const* >> const, KvpValueImpl*>, std::_Select1st<std::pair<char const* const, >> KvpValueImpl*> >, KvpFrameImpl::cstring_comparer, >> std::allocator<std::pair<char const* const, KvpValueImpl*> > >> >::_M_lower_bound (this=0x32069c0, __x=0x31, __y=0x3a286f8, >> __k=@0x7fffffffbda0: 0x33c16b8 "Budgeting") >> at /usr/include/c++/4.9.2/bits/stl_tree.h:1277 > > This one is harder. I’ve found the cause, but it’s bedtime so I’ll have > figure out what to fix tomorrow. The fundamental problem is that when I call > “new KvpFrame” in sixtp-dom-parser.cpp, it’s allocating memory that libxml2 > thinks belongs to it, so when the “data_for_children()” subtree is freed in > gnc_book_slots_end_handler(), the frame belonging to that KvpValue gets freed > and later overwritten by a call to g_log. When the optiondb tries to access > later, boom.
Alex, Well, that was the wrong cause. The real one was that I didn’t delete the option slots the right way. That helped me notice that KvpFrameImpl needed a proper destructor. Both committed, book options work again. Regards, John Ralls _______________________________________________ gnucash-devel mailing list gnucash-devel@gnucash.org https://lists.gnucash.org/mailman/listinfo/gnucash-devel