LeakSanitizer: detected memory leaks in libfontconfig.so for trivial graph with only one node
These leaks are not in Graphviz source code according to #379 (comment 366059166) and are also known as part of:
However; since this effectively blocks testing with the address sanitizer enabled, I think we should find or write issues in the fontconfig project and link here.
Steps to reproduce
-
Build using CMake with address sanitizer, e.g. with this script:
-
Run:
echo "graph {a}" | dot -Tsvg
Expected Behaviour
No memory leaks.
Actual Behaviour
=================================================================
==1524133==ERROR: LeakSanitizer: detected memory leaks
Direct leak of 77568 byte(s) in 303 object(s) allocated from:
#0 0x7f4cd7703bc8 in malloc (/usr/lib/x86_64-linux-gnu/libasan.so.5+0x10dbc8)
#1 0x7f4cd39da2f4 (/usr/lib/x86_64-linux-gnu/libfontconfig.so.1+0x212f4)
Direct leak of 1280 byte(s) in 2 object(s) allocated from:
#0 0x7f4cd7703ffe in __interceptor_realloc (/usr/lib/x86_64-linux-gnu/libasan.so.5+0x10dffe)
#1 0x7f4cd39da3a0 (/usr/lib/x86_64-linux-gnu/libfontconfig.so.1+0x213a0)
Indirect leak of 92544 byte(s) in 2892 object(s) allocated from:
#0 0x7f4cd7703dc6 in calloc (/usr/lib/x86_64-linux-gnu/libasan.so.5+0x10ddc6)
#1 0x7f4cd39da93c (/usr/lib/x86_64-linux-gnu/libfontconfig.so.1+0x2193c)
Indirect leak of 18673 byte(s) in 1764 object(s) allocated from:
#0 0x7f4cd768c3dd in strdup (/usr/lib/x86_64-linux-gnu/libasan.so.5+0x963dd)
#1 0x7f4cd39d9b64 in FcValueSave (/usr/lib/x86_64-linux-gnu/libfontconfig.so.1+0x20b64)
Indirect leak of 4160 byte(s) in 130 object(s) allocated from:
#0 0x7f4cd7703bc8 in malloc (/usr/lib/x86_64-linux-gnu/libasan.so.5+0x10dbc8)
#1 0x7f4cd39c654f (/usr/lib/x86_64-linux-gnu/libfontconfig.so.1+0xd54f)
Indirect leak of 800 byte(s) in 25 object(s) allocated from:
#0 0x7f4cd7703dc6 in calloc (/usr/lib/x86_64-linux-gnu/libasan.so.5+0x10ddc6)
#1 0x7f4cd39d9e0f (/usr/lib/x86_64-linux-gnu/libfontconfig.so.1+0x20e0f)
Indirect leak of 192 byte(s) in 6 object(s) allocated from:
#0 0x7f4cd7703dc6 in calloc (/usr/lib/x86_64-linux-gnu/libasan.so.5+0x10ddc6)
#1 0x7f4cd39d9cae (/usr/lib/x86_64-linux-gnu/libfontconfig.so.1+0x20cae)
Indirect leak of 48 byte(s) in 1 object(s) allocated from:
#0 0x7f4cd7703bc8 in malloc (/usr/lib/x86_64-linux-gnu/libasan.so.5+0x10dbc8)
#1 0x7f4cd39d3e11 in FcLangSetCreate (/usr/lib/x86_64-linux-gnu/libfontconfig.so.1+0x1ae11)
SUMMARY: AddressSanitizer: 195265 byte(s) leaked in 5123 allocation(s).
OS Version
Ubuntu 20.04
Graphviz Version
Built from a3c42725.
Additional info
- This does not generate any memory leaks:
echo 'graph {a [label=""]}' | dot -Tsvg
- In the above tests libfontconfig 2.13.1-2ubuntu3 was used. I built libfontconfig 2.13.93 from source and got the same leaks:
=================================================================
==1523570==ERROR: LeakSanitizer: detected memory leaks
Direct leak of 77568 byte(s) in 303 object(s) allocated from:
#0 0x7fdbd7159bc8 in malloc (/usr/lib/x86_64-linux-gnu/libasan.so.5+0x10dbc8)
#1 0x7fdbd33d8d74 in FcPatternObjectInsertElt /home/magjac/git/fontconfig/src/fcpat.c:545
Direct leak of 1280 byte(s) in 2 object(s) allocated from:
#0 0x7fdbd7159ffe in __interceptor_realloc (/usr/lib/x86_64-linux-gnu/libasan.so.5+0x10dffe)
#1 0x7fdbd33d8e20 in FcPatternObjectInsertElt /home/magjac/git/fontconfig/src/fcpat.c:536
Indirect leak of 92608 byte(s) in 2894 object(s) allocated from:
#0 0x7fdbd7159dc6 in calloc (/usr/lib/x86_64-linux-gnu/libasan.so.5+0x10ddc6)
#1 0x7fdbd33d93cc in FcValueListCreate /home/magjac/git/fontconfig/src/fcpat.c:136
#2 0x7fdbd33d93cc in FcPatternObjectAddWithBinding /home/magjac/git/fontconfig/src/fcpat.c:707
Indirect leak of 18701 byte(s) in 1764 object(s) allocated from:
#0 0x7fdbd70e23dd in strdup (/usr/lib/x86_64-linux-gnu/libasan.so.5+0x963dd)
#1 0x7fdbd33d85e4 in IA__FcValueSave /home/magjac/git/fontconfig/src/fcpat.c:103
Indirect leak of 4160 byte(s) in 130 object(s) allocated from:
#0 0x7fdbd7159bc8 in malloc (/usr/lib/x86_64-linux-gnu/libasan.so.5+0x10dbc8)
#1 0x7fdbd33c3f8f in FcConfigValues /home/magjac/git/fontconfig/src/fccfg.c:1787
Indirect leak of 832 byte(s) in 26 object(s) allocated from:
#0 0x7fdbd7159dc6 in calloc (/usr/lib/x86_64-linux-gnu/libasan.so.5+0x10ddc6)
#1 0x7fdbd33d888f in FcValueListCreate /home/magjac/git/fontconfig/src/fcpat.c:136
#2 0x7fdbd33d888f in FcValueListDuplicate /home/magjac/git/fontconfig/src/fcpat.c:230
Indirect leak of 192 byte(s) in 6 object(s) allocated from:
#0 0x7fdbd7159dc6 in calloc (/usr/lib/x86_64-linux-gnu/libasan.so.5+0x10ddc6)
#1 0x7fdbd33d872e in FcValueListCreate /home/magjac/git/fontconfig/src/fcpat.c:136
#2 0x7fdbd33d872e in FcValueListPrepend /home/magjac/git/fontconfig/src/fcpat.c:180
Indirect leak of 48 byte(s) in 1 object(s) allocated from:
#0 0x7fdbd7159bc8 in malloc (/usr/lib/x86_64-linux-gnu/libasan.so.5+0x10dbc8)
#1 0x7fdbd33d2041 in IA__FcLangSetCreate /home/magjac/git/fontconfig/src/fclang.c:476
SUMMARY: AddressSanitizer: 195389 byte(s) leaked in 5126 allocation(s).
- A workaround is building without Cairo support. What's the impact of this?