> On Dec 3, 2016, at 9:38 AM, Geert Janssens <geert.gnuc...@kobaltwit.be> wrote: > > Op zaterdag 3 december 2016 18:32:44 CET schreef Geert Janssens: >> Op zaterdag 3 december 2016 17:24:27 CET schreef Wm via gnucash-devel: >>> On 03/12/2016 16:05, John Ralls wrote: >>>>> On Dec 3, 2016, at 7:46 AM, Geert Janssens <geert.gnuc...@kobaltwit.be> >>>>> wrote:>> >>>>> >>>>> Op zaterdag 3 december 2016 16:34:13 CET schreef Geert Janssens: >>>>>> Op vrijdag 2 december 2016 14:30:19 CET schreef John Ralls: >>>>>>>> On Dec 2, 2016, at 12:53 PM, John Ralls <jra...@ceridwen.us> wrote: >>>>>>>>> On Dec 2, 2016, at 12:47 PM, Robert Fewell <14ubo...@gmail.com> >>>>>>>>> wrote: >>>>>>>>> >>>>>>>>> Just built master from >>>>>>>>> https://github.com/Gnucash/gnucash/commit/dd4b8a104d0f7ad2205407e8b >>>>>>>>> f1 >>>>>>>>> 0f >>>>>>>>> ee >>>>>>>>> c364c8127 and I still do not see the errors Geert is having. Added >>>>>>>>> a >>>>>>>>> Customer and a Vendor and still only have one of each. >>>>>>>> >>>>>>>> Bob, >>>>>>>> >>>>>>>> Yes, I'm also not yet able to reproduce the duplicate vendor issue. >>>>>>>> Geert >>>>>>>> mentioned on IRC that he's using Fedora-25 so I'm building a new VM >>>>>>>> with >>>>>>>> that to test. >>>>>>> >>>>>>> I can't reproduce it on Fedora-25 either. >>>>>>> >>>>>>> The save problems and crashes on master I *can* reproduce, so I'm >>>>>>> working >>>>>>> on that. >>>>>>> >>>>>>> Regards, >>>>>>> John Ralls >>>>>> >>>>>> John, >>>>>> >>>>>> I can confirm your commits fix the save problems and crashes. Thanks. >>>>>> >>>>>> As I appear to be the only one experiencing the other part of >>>>>> duplicate >>>>>> objects, I am digging further locally. >>>>>> >>>>>> Using gdb, I found that all non-core objects are registered twice. >>>>>> Once they are registered as part of loading the app-utils module, >>>>>> which >>>>>> in >>>>>> turn loads the engine module which then loads the business modules. >>>>>> >>>>>> The second time they are loaded because the python bindings load the >>>>>> engine >>>>>> module, triggering loading of the business modules again apparently. >>>>>> >>>>>> I have no idea (yet) why this didn't happen before the backend rewrite >>>>>> was >>>>>> merged back in. >>>>>> >>>>>> I suppose none of you have the python bindings enabled, which would >>>>>> explain >>>>>> why only I'm seeing this. >>>>>> >>>>>> Geert >>>>> >>>>> The easy one-line fix would be to test for engine_is_initialized == 1 >>>>> in >>>>> gnc_engine_init_part2 just like in gnc_engine_init_part1. >>>>> >>>>> I wonder though whether we'd want to move this up to gnc_engine_init in >>>>> general though. Do we want the init hooks to be run each time some code >>>>> calls gnc_engine_init or should they be called only once also ? >>>> >>>> IMO we want to get rid of all of the dlopening and just link the >>>> convenience libraries like a normal program. That's a lot of work, >>>> though, so for now we should be loading only once. >>>> >>>> Is the problem really the python bindings (src/optional/python-bindings) >>>> or the python console (src/python) that loads the python bindings? >>> >>> Open Q: has anyone tried this on Win where the python stuff is known not >>> to work? >>> >>> I think python is red herring in this for me and agree there are (at >>> least) two issues >> >> No, python is not a red herring here. This thread is becoming increasingly >> confusing because I report many different issues at once. >> >> There were the save failure and crash which John fixed yesterday. >> There is still the issue of all commodities being saved instead of only >> those that are actually in use. >> And there's the one I alone was seeing (business ojbects being saved twice >> resulting in a corrupt xml file). This last one only appeared when gnucash >> is built with python bindings and I have just pushed a fix for a a couple >> of minutes ago. >> >> So the only thing left is the abundance of commodities being saved by xml. >> > And I should have added that this indeed probably doesn't have anything to do > with the python bindings. So we can ignore those again from now on :)
I found it. When I abstracted KVP to make it private-ish to QofInstance I removed some tests in the course of changing kvp_frame_to_dom_tree() into qof_instance_slots_to_dom_tree() with the result that it returns an empty element instead of nullptr on the currencies so that the commodity gets saved when it shouldn't. Regards, John Ralls _______________________________________________ gnucash-devel mailing list gnucash-devel@gnucash.org https://lists.gnucash.org/mailman/listinfo/gnucash-devel