On 02/06/2018 10:14 PM, Peter Geoghegan wrote: > On Tue, Feb 6, 2018 at 1:04 PM, Tomas Vondra > <tomas.von...@2ndquadrant.com> wrote: >> Did you do a test with "-O0"? In my experience that makes valgrind tests >> much more reliable and repeatable. Some time ago we've seen cases that >> were failing for me but not for others, and I suspect it was due to me >> using "-O0". > > FWIW, I use -O1 when configure is run for Valgrind. I also turn off > assertions (this is all scripted). According to the Valgrind manual: > > "With -O1 line numbers in error messages can be inaccurate, although > generally speaking running Memcheck on code compiled at -O1 works > fairly well, and the speed improvement compared to running -O0 is > quite significant. Use of -O2 and above is not recommended as Memcheck > occasionally reports uninitialised-value errors which don’t really > exist." >
OK, although I was suggesting the optimizations may actually have the opposite effect - valgrind missing some of the invalid memory accesses (until the compiler decides not use them for some reason, causing sudden valgrind failures). > The manual does also say that there might even be some problems with > -O1 at a later point, but it sounds like it's probably worth it to me. > Skink uses -Og, FWIW. > I have little idea what -Og exactly means. It seems to be focused on debugging experience, and so still does some of the optimizations. Which I think would explain why skink was not detecting some of the failures for a long time. regards -- Tomas Vondra http://www.2ndQuadrant.com PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services