> On Apr 25, 2016, at 3:15 AM, will Snow <[email protected]> wrote: > > Hi All, > > After running Reports -> business -> customer report gnucash has a > segfault (git master branch c739f4fae442e583389dd8c47100a38a06aac4c4) > > I'm interested in helping out with gnucash so looked a bit further. It > looks as though the segfault occurs when the get_slot method is run > because the book variable is empty. > > src/libqof/qof/qofbook.cpp > 1194 KvpValue* > 1195 qof_book_get_option (QofBook *book, GSList *path) > 1196 { > 1197 KvpFrame *root = qof_instance_get_slots(QOF_INSTANCE (book)); > 1198 Path path_v {KVP_OPTION_PATH}; > 1199 for (auto item = path; item != nullptr; item = > g_slist_next(item)) > 1200 path_v.push_back(static_cast<const char*>(item->data)); > 1201 return root->get_slot(path_v); > 1202 } > After looking a bit deeper it seems that SWIG_MustGetPtr (see below) > returns null to arg1 (book) which is then passed to qof_book_get_option > resulting in qof_instance_get_slots returning null instead of an object > and then it segfaults when trying to run get_slots. > > I thought adding some sort of check on the root variable but that's > probably wrong and not solving the underlying problem? I'm not sure > where to go from here with regards to fixing the issue. Any pointers > would be helpful. Thanks. > > ./src/engine/swig-engine.c > static SCM > _wrap_qof_book_get_option (SCM s_0, SCM s_1) > { > #define FUNC_NAME "qof-book-get-option" > QofBook *arg1 = (QofBook *) 0 ; > GSList *arg2 = (GSList *) 0 ; > SCM gswig_result; > SWIGUNUSED int gswig_list_p = 0; > KvpValue *result = 0 ; > { > arg1 = (QofBook *)SWIG_MustGetPtr(s_0, SWIGTYPE_p_QofBook, 1, 0); > } > arg2 = gnc_scm_to_gslist_string(s_1); > result = (KvpValue *)qof_book_get_option(arg1,arg2); > gswig_result = gnc_kvp_value_ptr_to_scm(result); > > return gswig_result; > #undef FUNC_NAME
The problem is probably upstream of _wrap_qof_book_get_option(): Whatever is calling it from Scheme is likely passing a nullptr in s_0. If Scheme isn't one of your languages please file a bug. Regards, John Ralls _______________________________________________ gnucash-devel mailing list [email protected] https://lists.gnucash.org/mailman/listinfo/gnucash-devel
