Re: BUG #19040: Memory leak in hashed subplan node due to missing hashtempcxt reset
От | feichanghong |
---|---|
Тема | Re: BUG #19040: Memory leak in hashed subplan node due to missing hashtempcxt reset |
Дата | |
Msg-id | tencent_0C8392F1FB41065427D6C7AC8919073F8206@qq.com обсуждение исходный текст |
Ответ на | 回复:回复:BUG #19040: Memory leak in hashed subplan node due to missing hashtempcxt reset ("李海洋(陌痕)" <mohen.lhy@alibaba-inc.com>) |
Ответы |
Re: BUG #19040: Memory leak in hashed subplan node due to missing hashtempcxt reset
|
Список | pgsql-bugs |
On Sep 7, 2025, at 16:24, 李海洋(陌痕) <mohen.lhy@alibaba-inc.com> wrote:On 2025-09-06 20:31:53 Tom Lane <tgl@sss.pgh.pa.us> writes:> After contemplating things for awhile, I think that feichanghong’s
> idea is the right one after all: in each of the functions that switch
> into hashtable->tempcxt, let's do a reset on the way out, as attached.
> That's straightforward and visibly related to the required data
> lifespan.I have considered this approach as well, but my concern is that "tempcxt"is not always an independent memory context. In some cases, it referencesanother context — for example, in nodeSetOp.c’s "build_hash_table", “tempcxt"points to "setopstate->ps.ps_ExprContext->ecxt_per_tuple_memory". There issimilar usage in nodeAgg.c as well. I’m not entirely sure that this approach wouldnot discard data we still need, because the lifespan of"ps_ExprContext->ecxt_per_tuple_memory" seems to be longer than “tempcxt”.
Yes, I agree with that.
Should we make tempcxt a completely independent memory context?
It looks fine. Perhaps we don't need to pass tempcxt to BuildTupleHashTable,
but rather create a new one within it. After each switch to tempcxt, we should
clean it up using MemoryContextReset.
Best Regards,
Fei Changhong
Fei Changhong
В списке pgsql-bugs по дате отправления: