memory corruption in tbl
Bruno Haible via discussion of the GNU roff typesetting system and related software <[email protected]> Sat, 25 Jul 2026 01:17:37 +0200
| Newsgroups | gmane.comp.printing.groff.general |
|---|---|
| Message-ID | <3941520.VnKG3xVv5R@cagnes> |
I tried building the groff-1.25.0.rc1 with clang's ASAN.
The next error (during "make -k check"):
GROFF doc/groff-man-pages.pdf
=================================================================
==850834==ERROR: AddressSanitizer: alloc-dealloc-mismatch (malloc vs operator delete []) on 0x7051a6beb4e0
#0 0x590f7622b86d in operator delete[](void*) /home/runner/work/llvm-project/llvm-project/compiler-rt/lib/asan/asan_new_delete.cpp:179:46
#1 0x590f7624cdff in block_entry::~block_entry() /build/groff-1.25.0.rc1/build-64-clang/../src/preproc/tbl/table.cpp:667:3
#2 0x590f76282a24 in left_block_entry::~left_block_entry() /build/groff-1.25.0.rc1/build-64-clang/../src/preproc/tbl/table.cpp:334:7
#3 0x590f76282a74 in left_block_entry::~left_block_entry() /build/groff-1.25.0.rc1/build-64-clang/../src/preproc/tbl/table.cpp:334:7
#4 0x590f7625ce86 in table::~table() /build/groff-1.25.0.rc1/build-64-clang/../src/preproc/tbl/table.cpp:1309:5
#5 0x590f7622e9fc in process_table(table_input&) /build/groff-1.25.0.rc1/build-64-clang/../src/preproc/tbl/main.cpp:1667:5
#6 0x590f7622dda7 in process_input_file(_IO_FILE*) /build/groff-1.25.0.rc1/build-64-clang/../src/preproc/tbl/main.cpp:270:4
#7 0x590f76243bee in main /build/groff-1.25.0.rc1/build-64-clang/../src/preproc/tbl/main.cpp:1782:5
#8 0x73f1a782a600 in __libc_start_call_main csu/../sysdeps/nptl/libc_start_call_main.h:59:16
#9 0x73f1a782a717 in __libc_start_main csu/../csu/libc-start.c:360:3
#10 0x590f76142984 in _start (/build/groff-1.25.0.rc1/build-64-clang/tbl+0x5e984)
0x7051a6beb4e0 is located 0 bytes inside of 62-byte region [0x7051a6beb4e0,0x7051a6beb51e)
allocated by thread T0 here:
#0 0x590f761e7f39 in calloc /home/runner/work/llvm-project/llvm-project/compiler-rt/lib/asan/asan_malloc_linux.cpp:74:3
#1 0x590f7628be7a in string::extract() const /build/groff-1.25.0.rc1/build-64-clang/../src/libs/libgroff/string.cpp:384:33
#2 0x590f76263398 in table::add_entry(int, int, string const&, entry_format const*, char const*, int) /build/groff-1.25.0.rc1/build-64-clang/../src/preproc/tbl/table.cpp:1545:17
#3 0x590f76240b46 in process_data(table_input&, format*, options*) /build/groff-1.25.0.rc1/build-64-clang/../src/preproc/tbl/main.cpp:1567:13
#4 0x590f7622e972 in process_table(table_input&) /build/groff-1.25.0.rc1/build-64-clang/../src/preproc/tbl/main.cpp:1665:17
#5 0x590f7622dda7 in process_input_file(_IO_FILE*) /build/groff-1.25.0.rc1/build-64-clang/../src/preproc/tbl/main.cpp:270:4
#6 0x590f76243bee in main /build/groff-1.25.0.rc1/build-64-clang/../src/preproc/tbl/main.cpp:1782:5
#7 0x73f1a782a600 in __libc_start_call_main csu/../sysdeps/nptl/libc_start_call_main.h:59:16
#8 0x73f1a782a717 in __libc_start_main csu/../csu/libc-start.c:360:3
#9 0x590f76142984 in _start (/build/groff-1.25.0.rc1/build-64-clang/tbl+0x5e984)
SUMMARY: AddressSanitizer: alloc-dealloc-mismatch /build/groff-1.25.0.rc1/build-64-clang/../src/preproc/tbl/table.cpp:667:3 in block_entry::~block_entry()
==850834==HINT: if you don't care about these errors you may set ASAN_OPTIONS=alloc_dealloc_mismatch=0
==850834==ABORTING
/build/groff-1.25.0.rc1/build-64-clang/groff: error: tbl: Aborted
Explanation:
calloc() pairs with free().
new[] pairs with delete[].
Bruno