On Sat, 22 Nov 2025 13:46:50 -0500 Boyuan Yang <[email protected]> wrote:
> On Sat, 22 Nov 2025 22:02:13 +0500 Syed Shahrukh 
> <[email protected]> wrote:
> > Yes I have now checked the bug #1120685, there seems to be
> > incompatibilities in ABI from sqlcipher 1 -> 2 and the kmymoney db
> > abstraction plugin is not ready for it.
> > 
> > A sign is that preloading the older library solves the problem.
> > 
> > There is only one removal of the symbol sqlcipher_exportFunc  from 1->2 ,
> > which is not used else kmymoney won;t be able to build.
> > 
> > Presently  the debug information is not sufficient to pinpoint the problem.
> > 
> > I checked out the source of kmymoney, where I found that kmymoney is
> > utilizing the QT library QSqlDatabase sqlcipher plugin for DB access.
> > 
> > The sqlite plugin seems like a variant of
> > https://github.com/sjemens/qsqlcipher-qt5  which supports upto  sqlcipher
> > 4.5.3, no updates since 2022.
> > 
> > Plugin path within the source: kmymoney/plugins/sqlcipher
> > 
> > Debugging the issue with kmymoney targeting the sqlcipher plugin will
> > likely be the way forward.
> 
> Please find the backtrace in the attachment.

When we look at the related source code:

https://sources.debian.org/src/kmymoney/5.2.1-1/kmymoney/kmymoney.cpp#L1045

#ifdef ENABLE_SQLCIPHER
    /* Issues:
     * 1) libsqlite3 loads implicitly before libsqlcipher
     *  thus making the second one loaded but non-functional,
     * 2) libsqlite3 gets linked into kmymoney target implicitly
     *  and it's not possible to unload or unlink it explicitly
     *
     * Solution:
     * Use e.g. dummy sqlite3_key call, so that libsqlcipher gets loaded 
implicitly before libsqlite3
     * thus making the first one functional.
     *
     * Additional info:
     * 1) loading libsqlcipher explicitly doesn't solve the issue,
     * 2) using sqlite3_key only in sqlstorage plugin doesn't solve the issue,
     * 3) in a separate, minimal test case, loading libsqlite3 explicitly
     *  with QLibrary::ExportExternalSymbolsHint makes libsqlcipher 
non-functional
    */
    sqlite3_key(nullptr, nullptr, 0);
#endif

...should we continue in https://bugs.debian.org/1120685 instead of
https://bugs.debian.org/1121167 ?

Thanks,
Boyuan

Attachment: signature.asc
Description: This is a digitally signed message part

Reply via email to