On 11/6/18 6:51 PM, Tomas Vondra wrote: > On 11/6/18 6:35 PM, Alvaro Herrera wrote: >> On 2018-Nov-06, Tomas Vondra wrote: >> >>> Hi, >>> >>> I've recently updated to Fedora 28, and in that environment I get >>> quite a >>> few new valgrind issues (see the attached log). >> >> Hmm, related to >> https://postgr.es/m/20180220150838.GD18315@e733.localdomain ? >> Apparently the right answer is to add local suppressions ... >> > > Yep, seems like that. I'll check if the patch proposed by Aleksander > resolves all the issues reported by valgrind. >
OK, I propose we add suppressions per the attached patch. The rules are clearly incomplete, due to dependence on optimization used. For example now the stack includes __wcsnlen_avx2, but I see it was __wcsnlen_sse4_1 in Aleksander's report in February. Not sure what to do about this - maybe we should wildcard this first frame, to accept all wcsnlen variants. Opinions? regards -- Tomas Vondra http://www.2ndQuadrant.com PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
diff --git a/src/tools/valgrind.supp b/src/tools/valgrind.supp index 2f3b602773..1c8311338c 100644 --- a/src/tools/valgrind.supp +++ b/src/tools/valgrind.supp @@ -213,3 +213,39 @@ Memcheck:Cond fun:PyObject_Realloc } + +# wcsrtombs uses some clever optimizations internally, which to valgrind +# may look like access to uninitialized data. For example AVX2 instructions +# load data in 256-bit chunks, irrespectedly of wchar length. gconv does +# somethink similar by loading data in 32bit chunks and then shifting the +# data internally. Neither of those actually uses the uninitialized part +# of the buffer, as far as we know. +# +# https://www.postgresql.org/message-id/90ac0452-e907-e7a4-b3c8-15bd33780...@2ndquadrant.com + +{ + wcsnlen_optimized + Memcheck:Cond + fun:__wcsnlen_avx2 + fun:wcsrtombs + fun:wcstombs + fun:wchar2char +} + +{ + wcsnlen_optimized_addr32 + Memcheck:Addr32 + fun:__wcsnlen_avx2 + fun:wcsrtombs + fun:wcstombs + fun:wchar2char +} + +{ + gconv_transform_internal + Memcheck:Cond + fun:__gconv_transform_internal_utf8 + fun:wcsrtombs + fun:wcstombs + fun:wchar2char +}