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