pgsql: Fix inconsistent out-of-memory error reporting in dsa.c.
От | Thomas Munro |
---|---|
Тема | pgsql: Fix inconsistent out-of-memory error reporting in dsa.c. |
Дата | |
Msg-id | E1gy2Ib-0007Wh-Py@gemulon.postgresql.org обсуждение исходный текст |
Список | pgsql-committers |
Fix inconsistent out-of-memory error reporting in dsa.c. Commit 16be2fd1 introduced the flag DSA_ALLOC_NO_OOM to control whether the DSA allocator would raise an error or return InvalidDsaPointer on failure to allocate. One edge case was not handled correctly: if we fail to allocate an internal "span" object for a large allocation, we would always return InvalidDsaPointer regardless of the flag; a caller not expecting that could then dereference a null pointer. This is a plausible explanation for a one-off report of a segfault. Remove a redundant pair of braces so that all three stanzas that handle DSA_ALLOC_NO_OOM match in style, for visual consistency. While fixing inconsistencies, if FreePageManagerGet() can't supply the pages that our book-keeping says it should be able to supply, then we should always report a FATAL error. Previously we treated that as a regular allocation failure in one code path, but as a FATAL condition in another. Back-patch to 10, where dsa.c landed. Author: Thomas Munro Reported-by: Jakub Glapa Discussion: https://postgr.es/m/CAEepm=2oPqXxyWQ-1o60tpOLrwkw=VpgNXqqF1VN2EyO9zKGQw@mail.gmail.com Branch ------ master Details ------- https://git.postgresql.org/pg/commitdiff/29ddb548f683e15429cd5464029c01d83c40bb40 Modified Files -------------- src/backend/utils/mmgr/dsa.c | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-)
В списке pgsql-committers по дате отправления: