pgsql: Improve valgrind logic in aset.c,and fix multiple issues in gen

Поиск
Список
Период
Сортировка
От Tom Lane
Тема pgsql: Improve valgrind logic in aset.c,and fix multiple issues in gen
Дата
Msg-id E1eIOKe-0001UU-FW@gemulon.postgresql.org
обсуждение исходный текст
Список pgsql-committers
Improve valgrind logic in aset.c, and fix multiple issues in generation.c.

Revise aset.c so that all the "private" fields of chunk headers are
marked NOACCESS when outside the module, improving on the previous
coding which protected only requested_size.  Fix a couple of corner
case bugs, such as failing to re-protect the header during a failure
exit from AllocSetRealloc, and wrong padding-size calculation for an
oversize allocation request.

Apply the same design to generation.c, and also fix several bugs therein
that I found by dint of hacking the code to use generation.c as the
standard allocator and then running the core regression tests with it.
Notably, we have to track the actual size of each block, else the
wipe_mem call in GenerationReset clears the wrong amount of memory for
an oversize-chunk block; and GenerationCheck needs a way of identifying
freed chunks that isn't fooled by palloc(0).  I chose to fix the latter
by resetting the context pointer to NULL in a freed chunk, roughly like
what happens in a freed aset.c chunk.

Discussion: https://postgr.es/m/E1eHa4J-0006hI-Q8@gemulon.postgresql.org

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/0f2458ff5f970cade04313f1a10fe01d02f888b7

Modified Files
--------------
src/backend/utils/mmgr/aset.c       | 121 +++++++++++++++++--------
src/backend/utils/mmgr/generation.c | 173 +++++++++++++++++++++++-------------
2 files changed, 192 insertions(+), 102 deletions(-)


В списке pgsql-committers по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: pgsql: Mostly-cosmetic improvements in memory chunk header alignmentco
Следующее
От: Tom Lane
Дата:
Сообщение: Re: pgsql: Generational memory allocator