gnucash stable: Multiple changes pushed

John Ralls jralls at code.gnucash.org
Tue Jun 20 15:29:48 EDT 2023


Updated	 via  https://github.com/Gnucash/gnucash/commit/08d083e8 (commit)
	 via  https://github.com/Gnucash/gnucash/commit/3c0b051a (commit)
	 via  https://github.com/Gnucash/gnucash/commit/958e9a4d (commit)
	from  https://github.com/Gnucash/gnucash/commit/7381887b (commit)



commit 08d083e8e111cd24ad604d2786a89d4550ecfe6a
Merge: 7381887bfc 3c0b051ab0
Author: John Ralls <jralls at ceridwen.us>
Date:   Tue Jun 20 12:13:45 2023 -0700

    Merge Richard Cohen's 'fix-memory-errors' into stable.

commit 3c0b051ab0f9855cf4650801c6d57d8e593a4dd4
Author: Richard Cohen <richard at daijobu.co.uk>
Date:   Mon Jun 19 16:51:22 2023 +0100

    Valgrind: fix "Mismatched free/delete" for gnc_print_time64, qof_print_date
    
    ... when called from guile e.g. test-transaction and lots of other tests
    
    - gchar will also get the char* typemap, by typedef reduction
    
    ==119964== Mismatched free() / delete / delete []
    ==119964==    at 0x4847A1F: operator delete[](void*) (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
    ==119964==    by 0x669F3E4: _wrap_gnc_print_time64(scm_unused_struct*, scm_unused_struct*) (swig-engine.cpp:38533)
    ...
    
    ==119948== Mismatched free() / delete / delete []
    ==119948==    at 0x4847A1F: operator delete[](void*) (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
    ==119948==    by 0x6F6B431: _wrap_qof_print_date(scm_unused_struct*) (swig-engine.cpp:39124)
    ...

commit 958e9a4d6fadc631e0257e40a23539ce26e0f58e
Author: Richard Cohen <richard at daijobu.co.uk>
Date:   Thu Jun 15 20:09:14 2023 +0100

    Valgrind: fix "Invalid read" in test-exp-parser
    
    The pointer passed to the gfec exception handler is
    not valid after the exception handler ends
    
    ==382525== Invalid read of size 1
    ==382525==    at 0x484B050: memcpy at GLIBC_2.2.5 (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
    ==382525==    by 0x531AB67: __printf_buffer_write (Xprintf_buffer_write.c:39)
    ==382525==    by 0x5322CD4: __printf_buffer (vfprintf-process-arg.c:501)
    ==382525==    by 0x53465F3: __vasprintf_internal (vasprintf.c:102)
    ==382525==    by 0x499C8C1: g_vasprintf (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7600.1)
    ==382525==    by 0x4969BE0: g_strdup_vprintf (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7600.1)
    ==382525==    by 0x494B2F6: g_logv (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7600.1)
    ==382525==    by 0x494B7A2: g_log (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7600.1)
    ==382525==    by 0x4862862: func_op (gnc-exp-parser.c:342)
    ==382525==    by 0x485D381: primary_exp (expression_parser.c:1222)
    ==382525==    by 0x485CE0F: multiply_divide_op (expression_parser.c:1028)
    ==382525==    by 0x485CC33: add_sub_op (expression_parser.c:968)
    ==382525==  Address 0xad387ec is 764 bytes inside a block of size 766 free'd
    ==382525==    at 0x484620F: free (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
    ==382525==    by 0x4861D9B: gfec_apply (gfec.c:145)
    ==382525==    by 0x4862813: func_op (gnc-exp-parser.c:339)
    ==382525==    by 0x485D381: primary_exp (expression_parser.c:1222)
    ==382525==    by 0x485CE0F: multiply_divide_op (expression_parser.c:1028)
    ==382525==    by 0x485CC33: add_sub_op (expression_parser.c:968)
    ==382525==    by 0x485C9DE: assignment_op (expression_parser.c:886)
    ==382525==    by 0x485C101: parse_string (expression_parser.c:605)
    ==382525==    by 0x4862F07: gnc_exp_parser_parse_separate_vars (gnc-exp-parser.c:535)
    ==382525==    by 0x4862D60: gnc_exp_parser_parse (gnc-exp-parser.c:475)
    ==382525==    by 0x10A963: run_parser_test (test-exp-parser.c:94)
    ==382525==    by 0x10AB99: run_parser_tests (test-exp-parser.c:144)
    ==382525==  Block was alloc'd at
    ==382525==    at 0x4843738: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
    ==382525==    by 0x4A81473: scm_realloc (in /usr/lib/x86_64-linux-gnu/libguile-3.0.so.1.5.0)
    ==382525==    by 0x4AEEF70: scm_to_utf8_stringn (in /usr/lib/x86_64-linux-gnu/libguile-3.0.so.1.5.0)
    ==382525==    by 0x55AA71F: gnc_scm_to_utf8_string (gnc-guile-utils.c:42)
    ==382525==    by 0x4861D4E: gfec_apply (gfec.c:136)
    ==382525==    by 0x4862813: func_op (gnc-exp-parser.c:339)
    ==382525==    by 0x485D381: primary_exp (expression_parser.c:1222)
    ==382525==    by 0x485CE0F: multiply_divide_op (expression_parser.c:1028)
    ==382525==    by 0x485CC33: add_sub_op (expression_parser.c:968)
    ==382525==    by 0x485C9DE: assignment_op (expression_parser.c:886)
    ==382525==    by 0x485C101: parse_string (expression_parser.c:605)
    ==382525==    by 0x4862F07: gnc_exp_parser_parse_separate_vars (gnc-exp-parser.c:535)



Summary of changes:
 bindings/engine.i                     |  2 +-
 libgnucash/app-utils/gnc-exp-parser.c | 10 ++--------
 2 files changed, 3 insertions(+), 9 deletions(-)



More information about the gnucash-patches mailing list