On 1/15/19 3:11 AM, Andres Freund wrote: > Hi, > > On 2019-01-15 03:07:10 +0100, Tomas Vondra wrote: >> I've started observing funny valgrind failures on Fedora 28, possibly >> after upgrading from 3.14.0-1 to 3.14.0-7 a couple of days ago. This >> time it does not seem like platform-specific issues, though - the >> failures all look like this: > > Any chance you're compiling without USE_VALGRIND defined? IIRC these are > precisely what the VALGRIND_MAKE_MEM_DEFINED calls in inval.c are > intended to fight: > /* > * Define padding bytes in SharedInvalidationMessage structs to be > * defined. Otherwise the sinvaladt.c ringbuffer, which is accessed by > * multiple processes, will cause spurious valgrind warnings about > * undefined memory being used. That's because valgrind remembers the > * undefined bytes from the last local process's store, not realizing > that > * another process has written since, filling the previously > uninitialized > * bytes > */ > VALGRIND_MAKE_MEM_DEFINED(&msg, sizeof(msg)); > >
... the bang you might have just heard was me facepalming Yes, I've been compiling without USE_VALGRIND, because I've been rebuilding using a command from shell history and the command-line grew a bit too long to notice that. Anyway, I find it interesting that valgrind notices this particular place and not the other places, and that it only starts happening after a couple of minutes of running the regression tests (~5 minutes or so). regards -- Tomas Vondra http://www.2ndQuadrant.com PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services