[GNC] Sluggish after 5.13

Sherlock sh025622 at gmail.com
Thu Oct 30 13:31:43 EDT 2025


John,

Thanks.  That explains why only Windows appears broken.

So, is the intent to use GNC_DBD_DIR on Windows as well or should we fix 
the code and not use GNC_DBD_DIR to work around the issue on Mac?

Regards,

Sherlock


On 10/30/25 8:28 AM, John Ralls wrote:
> Sherlock,
> 
> It doesn’t affect the Mac Bundle because that defines GNC_DBD_DIR to point to the bundle’s Resources/lib/dbd in the environment file.
> 
> Mingw64 doesn’t provide libdbi so it’s built by jhbuild. We set the dbd-driver directory to the installation prefix, https://github.com/Gnucash/gnucash-on-windows/blob/668227c9651224bd0a0f9ce87713546ccfca9af8/jhbuildrc.in#L82.
> 
> Regards,
> John Ralls
> 
>> On Oct 29, 2025, at 20:02, Sherlock <sh025622 at gmail.com> wrote:
>>
>> I've been trying to understand why this hasn't been an issue on the other platforms that have been on libdbi 0.9.1 for sometime.  The generic bug was introduced 2 years ago (commit b011c81). I suspect the issue isn't seen on Linux where libdbi is installed in the system location or on a Mac build machine.  I think the issue should appear on non-build Macs but, of course, the issue won't be apparent to a user unless they aren't using the xml format.
>>
>> Regards,
>>
>> Sherlock
>>
>> On 10/29/25 6:54 PM, Sherlock wrote:
>>> I maybe wrong about the c:\libdbi\lib\dbd folder as there are compile time definition that will override the location which appears to be something like /mingw32/lib/dbd but that should still typically miss in a typical user's gnucash installation.
>>> Setting GNC_DBD_DIR to something like C:\Program Files (x86)\gnucash\lib\dbd should work around the issue.
>>> Regards,
>>> Sherlock
>>> On 10/29/25 4:32 PM, Sherlock wrote:
>>>> Hi John,
>>>>
>>>> I suspect the Windows nightly builds have not been properly supporting databases since libdbi was updated to 0.9.1 on October 5th unless the drivers are in the c:\libdbi\lib\dbd folder or the folder to which the GNC_DBD_DIR environment variable is set.
>>>>
>>>> For example, attempt to save as sqlite3.
>>>>
>>>> It appears there is a generic bug in gnc_module_init_backend_dbi() when HAVE_LIBDBI_R is defined.  Specifically, when the initial dbi_initialize_r() returns no drivers, the dbi_instance variable is still set.
>>>>
>>>> So, instead of:
>>>>
>>>> #if HAVE_LIBDBI_R
>>>>           if (dbi_instance)
>>>>               return;
>>>> #endif
>>>>
>>>> the code should be:
>>>>
>>>> #if HAVE_LIBDBI_R
>>>>           if (dbi_instance)
>>>>           {
>>>>               dbi_shutdown_r (dbi_instance);
>>>>               dbi_instance = nullptr;
>>>>           }
>>>> #endif
>>>>
>>>>
>>>> Regards,
>>>>
>>>> Sherlock
>>>>
>>





More information about the gnucash-user mailing list