Re: 回复: Fix segfault while accessing half-initialized hash table in pgstat_shmem.c
От | Rider |
---|---|
Тема | Re: 回复: Fix segfault while accessing half-initialized hash table in pgstat_shmem.c |
Дата | |
Msg-id | CAKatu4tJe0PK-AsSmr0YYHsDYNrBC7AXeBgZQhEMnHZHvz-_uw@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: 回复: Fix segfault while accessing half-initialized hash table in pgstat_shmem.c (Steven Niu <niushiji@gmail.com>) |
Ответы |
Re: 回复: Fix segfault while accessing half-initialized hash table in pgstat_shmem.c
Re: 回复: Fix segfault while accessing half-initialized hash table in pgstat_shmem.c |
Список | pgsql-hackers |
Hi Steven,
I think when an error is thrown within the PG_TRY block, the assignment to shheader is interrupted and never completes. As a result, shheader retains its initial, NULL value.
And, the PG_RE_THROW() within the PG_CATCH block causes a non-local jump, immediately aborting the current execution path to handle the error at a higher level. This guarantees that the code following PG_END_TRY is unreachable in the error scenario.
And, the PG_RE_THROW() within the PG_CATCH block causes a non-local jump, immediately aborting the current execution path to handle the error at a higher level. This guarantees that the code following PG_END_TRY is unreachable in the error scenario.
Steven Niu <niushiji@gmail.com> 于2025年9月4日周四 15:38写道:
_______________________________________
From: Michael Paquier
Sent: Thursday, September 04, 2025 14:30
To: Steven Niu
Cc: Mikhail Kot; pgsql-hackers@lists.postgresql.org; to@myrrc.dev
Subject: Re: 回复: Fix segfault while accessing half-initialized hash table in pgstat_shmem.c
On Thu, Sep 04, 2025 at 02:31:34AM +0000, Steven Niu wrote:
> If pgstat_init_entry() errors on OOM, what would it returns to shheader, NULL?
> That would bring trouble to dshash_delete_entry().
Based on the proposal of patch 0002, the code would throw an error
after cleaning up the shared memory state. The generation and
refcount number assigned inside pgstat_init_entry() would not matter
as well because the entry created by dshash_find_or_insert() would be
entirely gone. So I am not sure what's the point you are trying to
make here.
--
Michael
Sorry, I made a mistake. I should say:
"If pgstat_init_entry() errors on OOM, the local variable shheader may be NULL. This would bring trouble to pgstat_acquire_entry_ref() in the line 30 of patch 002".
В списке pgsql-hackers по дате отправления: