Re: bug in SlabAlloc / VALGRIND_MAKE_MEM_DEFINED
Tomas Vondra <tomas.vondra@2ndquadrant.com>
From: Tomas Vondra <tomas.vondra@2ndquadrant.com>
To: PostgreSQL Developers <pgsql-hackers@postgresql.org>
Date: 2017-04-04T21:23:30Z
Lists: pgsql-hackers
Attachments
- slab-valgrind-fix-v2.patch (binary/octet-stream) patch v2
On 04/04/2017 10:42 PM, Tomas Vondra wrote: > Hi, > > Andres nagged to me about valgrind runs taking much longer since > 9fab40ad introduced the SlabContext into reorderbuffer.c. And by > "longer" I mean hours instead of minutes. > > After a bit of investigation I stumbled on this line in slab.c: > > VALGRIND_MAKE_MEM_DEFINED(chunk, SlabChunkGetPointer(chunk)); > > which is wrong, because the second parameter should be size and not > another pointer. This essentially marks a lot of memory as defined, > which results in the extreme test runtime. > > Instead, the line should be: > > VALGRIND_MAKE_MEM_DEFINED(SlabChunkGetPointer(chunk), sizeof(int32)); > > Patch attached. > Turns out SlabCheck() was missing VALGRIND_MAKE_MEM_DEFINED, resulting in a valgrind failure with --enable-assert. Updated patch version attached, passing all tests in test_decoding. regards -- Tomas Vondra http://www.2ndQuadrant.com PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
Commits
-
Fix two valgrind issues in slab allocator.
- 490e9a98ff96 10.0 landed