Stefan, I’d say it isn’t unexpected. GnuCash has plenty of real leaks and plenty more cases where its unorthodox memory management makes the sanitizer think there are leaks. I think the sanitizer reports those leaks as errors so it’s reasonable for ninja and ctest to count that as a test failure.
What we expect from the coverage report build is what the CI results are, and they don’t emit a message summary so they’re quieter and everything passes. That might be down to a different gcc version or lcov version. Maybe the failure reason is logged in the output file (/home/sk/gnucash/build-debug/Coverage/gnucash-cli_result.info <http://gnucash-cli_result.info/>)? Regards, John Ralls > On Jan 10, 2026, at 09:53, Stefan Koch <[email protected]> wrote: > > Excellent. Your confirmation helped me focus on the right thing. I > had build type as Asan and had -DLEAKS=ON. > > The tests themselves were passing, but there were many leaks that were > causing the tests to fail in that configuration. Is that expected? > > My next issue is with coverage. Some [5 and 7 of 28] of the "ninja > lcov-collect" commands fail. > > The full output is: > $ ninja lcov-collect > [1/28] cd /home/sk/gnucash/build-debug/libgnucash/backend/xml && lcov > --quiet ...ml.dir -o > /home/sk/gnucash/build-debug/Coverage/gncmod-backend-xml_result.inf > Message summary: > 7 ignore messages: > unused: 7 > [2/28] cd /home/sk/gnucash/build-debug/libgnucash/gnc-module && lcov > --quiet -...gnc-module.dir -o > /home/sk/gnucash/build-debug/Coverage/gnc-module_result.inf > Message summary: > 7 ignore messages: > unused: 7 > [3/28] cd /home/sk/gnucash/build-debug/libgnucash/core-utils && lcov > --quiet -...-utils.dir -o > /home/sk/gnucash/build-debug/Coverage/gnc-core-utils_result.inf > Message summary: > 7 ignore messages: > unused: 7 > [4/28] cd /home/sk/gnucash/build-debug/libgnucash/backend/dbi && lcov > --quiet ...bi.dir -o > /home/sk/gnucash/build-debug/Coverage/gncmod-backend-dbi_result.inf > Message summary: > 7 ignore messages: > unused: 7 > [5/28] cd /home/sk/gnucash/build-debug/gnucash && lcov --quiet > --exclude "/usr...Files/gnucash.dir -o > /home/sk/gnucash/build-debug/Coverage/gnucash_result.inf > FAILED: gnucash/CMakeFiles/lcov-collect-gnucash > /home/sk/gnucash/build-debug/gnucash/CMakeFiles/lcov-collect-gnucash > cd /home/sk/gnucash/build-debug/gnucash && lcov --quiet --exclude > "/usr/local/*" --exclude "/usr/*" --exclude "//*" --exclude "/usr/*" > --exclude "/home/sk/gnc-dev-install/*" --exclude "/usr/X11R6/*" > --exclude "/usr/pkg/*" --exclude "/opt/*" --ignore-errors > unused,unused --ignore-errors mismatch,mismatch --ignore-errors > empty,empty --rc geninfo_unexecuted_blocks=1 --branch-coverage > --demangle-cpp c++filt -c --directory > /home/sk/gnucash/build-debug/gnucash/CMakeFiles/gnucash.dir -o > /home/sk/gnucash/build-debug/Coverage/gnucash_result.info > Message summary: > 10 ignore messages: > empty: 2 > unused: 8 > [6/28] cd /home/sk/gnucash/build-debug/libgnucash/tax && lcov --quiet > --exclud...le-tax.dir -o > /home/sk/gnucash/build-debug/Coverage/gnc-locale-tax_result.inf > Message summary: > 7 ignore messages: > unused: 7 > [7/28] cd /home/sk/gnucash/build-debug/gnucash && lcov --quiet > --exclude "/usr...ucash-cli.dir -o > /home/sk/gnucash/build-debug/Coverage/gnucash-cli_result.inf > FAILED: gnucash/CMakeFiles/lcov-collect-gnucash-cli > /home/sk/gnucash/build-debug/gnucash/CMakeFiles/lcov-collect-gnucash-cli > cd /home/sk/gnucash/build-debug/gnucash && lcov --quiet --exclude > "/usr/local/*" --exclude "/usr/*" --exclude "//*" --exclude "/usr/*" > --exclude "/home/sk/gnc-dev-install/*" --exclude "/usr/X11R6/*" > --exclude "/usr/pkg/*" --exclude "/opt/*" --ignore-errors > unused,unused --ignore-errors mismatch,mismatch --ignore-errors > empty,empty --rc geninfo_unexecuted_blocks=1 --branch-coverage > --demangle-cpp c++filt -c --directory > /home/sk/gnucash/build-debug/gnucash/CMakeFiles/gnucash-cli.dir -o > /home/sk/gnucash/build-debug/Coverage/gnucash-cli_result.info > Message summary: > 10 ignore messages: > empty: 2 > unused: 8 > [8/28] cd /home/sk/gnucash/build-debug/libgnucash/backend/xml && lcov > --quiet ...dir -o > /home/sk/gnucash/build-debug/Coverage/gnc-backend-xml-utils_result.inf > Message summary: > 7 ignore messages: > unused: 7 > [9/28] cd /home/sk/gnucash/build-debug/libgnucash/app-utils && lcov > --quiet --...p-utils.dir -o > /home/sk/gnucash/build-debug/Coverage/gnc-app-utils_result.inf > Message summary: > 7 ignore messages: > unused: 7 > [10/28] cd /home/sk/gnucash/build-debug/libgnucash/backend/sql && lcov > --quiet...d-sql.dir -o > /home/sk/gnucash/build-debug/Coverage/gnc-backend-sql_result.inf > Message summary: > 7 ignore messages: > unused: 7 > [11/28] cd /home/sk/gnucash/build-debug/gnucash/gnome && lcov --quiet > --exclud...s/gnc-gnome.dir -o > /home/sk/gnucash/build-debug/Coverage/gnc-gnome_result.inf > Message summary: > 7 ignore messages: > unused: 7 > [12/28] cd /home/sk/gnucash/build-debug/libgnucash/engine && lcov > --quiet --ex...gnc-engine.dir -o > /home/sk/gnucash/build-debug/Coverage/gnc-engine_result.inf > Message summary: > 17 ignore messages: > mismatch: 10 > unused: 7 > ninja: build stopped: subcommand failed. > > When I ran the first command that failed with --verbose instead of > --quiet I got the below. Nothing in there jumps out at me that there > was a problem. I did vefivy that the lcov call returned 1 (not 0) on > the command line. > > cd /home/sk/gnucash/build-debug/gnucash && lcov --verbose --exclude > "/usr/local/*" --exclude "/usr/*" --exclude "//*" --exclude "/usr/*" > --exclude "/home/sk/gnc-dev-install/*" --exclude "/usr/X11R6/*" > --exclude "/usr/pkg/*" --exclude "/opt/*" --ignore-errors > unused,unused --ignore-errors mismatch,mismatch --ignore-errors > empty,empty --rc geninfo_unexecuted_blocks=1 --branch-coverage > --demangle-cpp c++filt -c --directory > /home/sk/gnucash/build-debug/gnucash/CMakeFiles/gnucash-cli.dir -o > /home/sk/gnucash/build-debug/Coverage/gnucash-cli_result.info > apply --rc overrides > Capturing coverage data from > /home/sk/gnucash/build-debug/gnucash/CMakeFiles/gnucash-cli.dir > geninfo cmd: '/usr/bin/geninfo > /home/sk/gnucash/build-debug/gnucash/CMakeFiles/gnucash-cli.dir > --toolname lcov --output-filename > /home/sk/gnucash/build-debug/Coverage/gnucash-cli_result.info > --verbose --ignore-errors unused --ignore-errors unused > --ignore-errors mismatch --ignore-errors mismatch --ignore-errors > empty --ignore-errors empty --branch-coverage --rc > geninfo_unexecuted_blocks=1 --demangle-cpp c++filt --exclude > /usr/local/* --exclude /usr/* --exclude //* --exclude /usr/* --exclude > /home/sk/gnc-dev-install/* --exclude /usr/X11R6/* --exclude /usr/pkg/* > --exclude /opt/*' > apply --rc overrides > gcov is '/usr/bin/gcov' > Found gcov version: 14.2.0 > Using intermediate gcov format > lcov: applying '--filter region,branch_region' by default - see the > '--no-markers' section in the man page for more information. > Recording 'internal' directories: > /home/sk/gnucash/build-debug/gnucash/CMakeFiles/gnucash-cli.dir > Writing temporary data to /tmp/geninfo_datO8RV > Scanning /home/sk/gnucash/build-debug/gnucash/CMakeFiles/gnucash-cli.dir > for .gcda files ... > using: chunkSize: 1, nchunks:0, intervalLength:0 > Finished processing 0 GCDA files > Message summary: > 10 ignore messages: > empty: 2 > unused: 8 > > > On Sat, Jan 10, 2026 at 11:55 AM John Ralls <[email protected]> wrote: >> >> Stefan, >> >> Something is wrong with your build environment then. The tests should all >> pass. Check the CI on the latest build. We have CI on the Github repo. You >> can see the results by clicking the green check (when they all pass) or red >> X (when something fails) next to commits in history and the latest commit on >> the front page https://github.com/gnucash/gnucash. >> >> What is the output of the first failure, test-exp-parser? >> >> Look at >> https://gnucash.github.io/gnucash/Coverage-HTML/libgnucash/engine/index.html >> instead of >> https://gnucash.github.io/gnucash/Coverage-HTML/build/libgnucash/engine/index.html >> : The difference is that the latter contains those files that are created >> as part of the build process. iso-4217-currencies.c is created from >> iso-4217-currencies.xml >> (https://github.com/Gnucash/gnucash/blob/stable/libgnucash/engine/iso-4217-currencies.xml) >> using the XSLT stylesheet >> https://github.com/Gnucash/gnucash/blob/stable/libgnucash/engine/iso-currencies-to-c.xsl. >> >> Regards, >> John Ralls >> >> On Jan 10, 2026, at 05:53, Stefan Koch <[email protected]> wrote: >> >> Thanks for the reply. >> >> So, I have made a clean debian 13 vm and still have much the same >> errors as I did before. >> >> I am happy to drill down into the issues. I just wanted to make sure >> that my build system is setup properly. >> >> Do people that have been doing ongoing development get the same many >> failures that I do. If so I can get to work on fixing them. If not, >> then I still have an issue with my build setup. >> >> The reason that I think I may not is that if you drill down on the >> coverage page https://gnucash.github.io/gnucash/Coverage-HTML/ into >> the html engine page here: >> https://gnucash.github.io/gnucash/Coverage-HTML/build/libgnucash/engine/index.html, >> the only file that looks to be checked is the iso-4217-currencies.c >> file. That is why I thought there may be a problem. If there was at >> least some coverage on more files in libgnucash/engine I would have >> expected to see them there. I know there are more tests for it. >> Maybe they all fail and therefore are not shown in the coverage >> report. >> >> Drilling down looks confusing. Specifically, the test-cashobject.c >> test does not show up as a failed test, but the >> libgnucash/engine/cashobject.cpp does not show up in the coverage >> summary. >> >> These are the errors I still get on a clean VM: >> The following tests FAILED: >> 1 - test-exp-parser (Failed) >> 3 - test-sx (Failed) >> 4 - test-gnc-quotes (Failed) >> 5 - test-autoclear (Failed) >> 7 - test-kvp-frames (Failed) >> 9 - test-load-xml2 (Failed) >> 10 - test-load-example-account (Failed) >> 11 - test-load-save-files (Failed) >> 12 - test-xml-contents (Failed) >> 14 - test-xml-account (Failed) >> 15 - test-xml-commodity (Failed) >> 16 - test-xml-pricedb (Failed) >> 17 - test-xml-transaction (Failed) >> 19 - test-backend-dbi (Failed) >> 21 - test-sqlbe (Failed) >> 22 - test-gnc-glib-utils (Failed) >> 33 - test-engine (Failed) >> 40 - test-transaction-reversal (Failed) >> 41 - test-transaction-voiding (Failed) >> 51 - test-kvp-value (Failed) >> 59 - test-import-map (Failed) >> 63 - test-load-c (Failed) >> 68 - test-link-module-tax-us (Failed) >> 69 - test-invoice-report-builtin-default (Failed) >> 70 - test-assistant-stock-transaction (Failed) >> 71 - test-load-gnome-utils-module (Failed) >> 72 - test-import-parse (Failed) >> 73 - test-import-pending-matches (Failed) >> 76 - test-aqb (Failed) >> 81 - test-qif-imp (Failed) >> 82 - test-qif-parse (Failed) >> 83 - test-qif-merge-groups (Failed) >> 84 - test-split-register-copy-ops (Failed) >> 85 - test-standard-category-report (Failed) >> 86 - test-standard-net-linechart (Failed) >> 87 - test-standard-net-barchart (Failed) >> 88 - test-cashflow-barchart (Failed) >> 89 - test-charts (Failed) >> 90 - test-transaction (Failed) >> 91 - test-account-summary (Failed) >> 92 - test-balsheet-pnl (Failed) >> 93 - test-income-gst (Failed) >> 94 - test-budget (Failed) >> 95 - test-register (Failed) >> 96 - test-trial-balance (Failed) >> 97 - test-equity-statement (Failed) >> 98 - test-average-balance (Failed) >> 99 - test-ifrs-cost-basis (Failed) >> 100 - test-invoice (Failed) >> 101 - test-new-owner-report (Failed) >> 102 - test-owner-report (Failed) >> 103 - test-portfolios (Failed) >> 104 - test-stress-options (Failed) >> 105 - test-cash-flow (Failed) >> 106 - test-load-report-module (Failed) >> 107 - test-test-extras (Failed) >> 108 - test-commodity-utils (Failed) >> 109 - test-report-utilities (Failed) >> 110 - test-html-utilities-srfi64 (Failed) >> 111 - test-html-fonts (Failed) >> 112 - test-html-chart (Failed) >> 113 - test-report-html (Failed) >> 114 - test-report (Failed) >> 115 - test-scm-query (Failed) >> 116 - test-create-account (Failed) >> 117 - test-core-utils (Failed) >> 118 - test-business-core (Failed) >> 119 - test-scm-engine (Failed) >> 120 - test-scm-kvpvalue (Failed) >> 121 - test-options (Failed) >> 122 - test-scm-utilities (Failed) >> 123 - test-module-deprecation (Failed) >> 124 - test-c-interface (Failed) >> 125 - test-load-app-utils-module (Failed) >> 126 - test-gnc-optiondb (Failed) >> 127 - test-gnc-option-scheme-output (Failed) >> 128 - test-date-utilities (Failed) >> 129 - test-print-queries (Failed) >> 130 - test-scm-query-string (Failed) >> 132 - python-bindings (Failed) >> Errors while running CTest >> >> On Fri, Jan 9, 2026 at 11:32 PM John Ralls <[email protected]> wrote: >> >> >> >> >> On Jan 9, 2026, at 12:54, Stefan Koch <[email protected]> wrote: >> [Removed a bunch of my stuff.] >> >> Working with unit tests would be a great way to learn the code base. >> >> Perhaps you misunderstand how the aggregate for libgnucash/engine is >> computed. 75% doesn’t mean that every file is at 75% coverage or that 75% >> coverage is the worst file. It means that there are 26572 lines and 5301 >> functions in all of the files in libgnucash/engine and that 17661 lines and >> 2775 functions are covered. (And yes, that’s not 75% it’s 66.5% of lines and >> 52.3% of functions, the score in this afternoon’s coverage run. >> >> Note that in https://gnucash.github.io/gnucash/Coverage-HTML/ you can drill >> right down to the file to see which functions and lines need attention. >> >> But before you start work you need to get a clean build. All of the tests >> should pass, >> >> Note that Linux has a linkage problem if you have GnuCash installed in a way >> that ld.so.conf can see it: The linux linker isn’t very smart and it will >> link the installed libraries in preference to the just-built ones. That’s >> also true for Guile, which is even less bright. That means that you need to >> construct a build environment that’s isolated from where GnuCash is >> installed. I think the easiest way to do that is to use a flatpak GnuCash >> for your accounting work and develop on the system. More difficult >> possibilities are to set up a build environment in a flatpak sandbox or >> construct a chroot jail to develop in. >> >> One other thing: ninja check is *supposed* to build everything, but I never >> trust it. I always run ninja && ninja check. >> >> If that’s not the problem or if you still can’t get tests to pass after >> isolating your build then you’ll need to dig into the test failures—the >> detailed test output is in ${topbuilddir}//Testing/Temporary/LastTest.log >> and you can run individual tests wth `ctest -R test-name`. Add `-V` and it >> will print the output to stdout as well as to LastTest.log. >> >> Regards, >> John Ralls >> >>
_______________________________________________ gnucash-devel mailing list [email protected] https://lists.gnucash.org/mailman/listinfo/gnucash-devel
