Re: BUG #19484: Segmentation fault triggered by FDW

From: ZhangChi <798604270(at)qq(dot)com>
To: Amit Langote <amitlangote09(at)gmail(dot)com>, Etsuro Fujita <etsuro(dot)fujita(at)gmail(dot)com>
Cc: Richard Guo <guofenglinux(at)gmail(dot)com>, Matheus Alcantara <matheusssilv97(at)gmail(dot)com>, Ayush Tiwari <ayushtiwari(dot)slg01(at)gmail(dot)com>, Rafia Sabih <rafia(dot)pghackers(at)gmail(dot)com>, pgsql-bugs <pgsql-bugs(at)lists(dot)postgresql(dot)org>, Amit Langote <amitlan(at)postgresql(dot)org>
Subject: Re: BUG #19484: Segmentation fault triggered by FDW
Date: 2026-08-04 03:24:15
Message-ID: tencent_102A2E24F47E6961F7EF1A6CFE8BACD6A405@qq.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

Thanks all for fixing this issue and making pg better. Since this issue can reliably crash the PostgreSQL server, I would like to ask whether it should be treated as a security vulnerability and whether it is eligible for CVE assignment.

Original


From: Amit Langote <amitlangote09(at)gmail(dot)com&gt;
Date: 2026-06-25 20:21
To: Etsuro Fujita <etsuro(dot)fujita(at)gmail(dot)com&gt;
Cc: Richard Guo <guofenglinux(at)gmail(dot)com&gt;, Matheus Alcantara <matheusssilv97(at)gmail(dot)com&gt;, Ayush Tiwari <ayushtiwari(dot)slg01(at)gmail(dot)com&gt;, Rafia Sabih <rafia(dot)pghackers(at)gmail(dot)com&gt;, 798604270 <798604270(at)qq(dot)com&gt;, pgsql-bugs <pgsql-bugs(at)lists(dot)postgresql(dot)org&gt;, Amit Langote <amitlan(at)postgresql(dot)org&gt;
Subject: Re: BUG #19484: Segmentation fault triggered by FDW

On&nbsp;Thu,&nbsp;Jun&nbsp;25,&nbsp;2026&nbsp;at&nbsp;8:47 PM&nbsp;Amit&nbsp;Langote&nbsp;<amitlangote09(at)gmail(dot)com&gt;&nbsp;wrote:
&gt;&nbsp;On&nbsp;Thu,&nbsp;Jun&nbsp;25,&nbsp;2026&nbsp;at&nbsp;3:15 PM&nbsp;Etsuro&nbsp;Fujita&nbsp;<etsuro(dot)fujita(at)gmail(dot)com&gt;&nbsp;wrote:
&gt;&nbsp;&gt;&nbsp;On&nbsp;Thu,&nbsp;Jun&nbsp;25,&nbsp;2026&nbsp;at&nbsp;8:24 AM&nbsp;Amit&nbsp;Langote&nbsp;<amitlangote09(at)gmail(dot)com&gt;&nbsp;wrote:
&gt;&nbsp;&gt;&nbsp;&gt;&nbsp;On&nbsp;Thu,&nbsp;Jun&nbsp;25,&nbsp;2026&nbsp;at&nbsp;2:02 AM&nbsp;Etsuro&nbsp;Fujita&nbsp;<etsuro(dot)fujita(at)gmail(dot)com&gt;&nbsp;wrote:
&gt;&nbsp;&gt;&nbsp;&gt;&nbsp;&gt;&nbsp;This&nbsp;might&nbsp;be&nbsp;nitpicking,&nbsp;but:
&gt;&nbsp;&gt;&nbsp;&gt;&nbsp;&gt;
&gt;&nbsp;&gt;&nbsp;&gt;&nbsp;&gt;&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(list_length(node-&gt;resultRelations)&nbsp;==&nbsp;mtstate-&gt;mt_nrels)
&gt;&nbsp;&gt;&nbsp;&gt;&nbsp;&gt;&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fdw_private&nbsp;=&nbsp;(List&nbsp;*)&nbsp;list_nth(node-&gt;fdwPrivLists,&nbsp;j);
&gt;&nbsp;&gt;&nbsp;&gt;&nbsp;&gt;&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else
&gt;&nbsp;&gt;&nbsp;&gt;&nbsp;&gt;&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
&gt;&nbsp;&gt;&nbsp;&gt;&nbsp;&gt;&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Index&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rti&nbsp;=&nbsp;resultRelInfo-&gt;ri_RangeTableIndex;
&gt;&nbsp;&gt;&nbsp;&gt;&nbsp;&gt;&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ListCell&nbsp;&nbsp;&nbsp;*lc1;
&gt;&nbsp;&gt;&nbsp;&gt;&nbsp;&gt;&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ListCell&nbsp;&nbsp;&nbsp;*lc2;
&gt;&nbsp;&gt;&nbsp;&gt;&nbsp;&gt;&nbsp;+
&gt;&nbsp;&gt;&nbsp;&gt;&nbsp;&gt;&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fdw_private&nbsp;=&nbsp;NIL;
&gt;&nbsp;&gt;&nbsp;&gt;&nbsp;&gt;&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;forboth(lc1,&nbsp;node-&gt;resultRelations,&nbsp;lc2,&nbsp;node-&gt;fdwPrivLists)
&gt;&nbsp;&gt;&nbsp;&gt;&nbsp;&gt;&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
&gt;&nbsp;&gt;&nbsp;&gt;&nbsp;&gt;&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(lfirst_int(lc1)&nbsp;==&nbsp;(int)&nbsp;rti)
&gt;&nbsp;&gt;&nbsp;&gt;&nbsp;&gt;&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
&gt;&nbsp;&gt;&nbsp;&gt;&nbsp;&gt;&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fdw_private&nbsp;=&nbsp;(List&nbsp;*)&nbsp;lfirst(lc2);
&gt;&nbsp;&gt;&nbsp;&gt;&nbsp;&gt;&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;
&gt;&nbsp;&gt;&nbsp;&gt;&nbsp;&gt;&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&gt;&nbsp;&gt;&nbsp;&gt;&nbsp;&gt;&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&gt;&nbsp;&gt;&nbsp;&gt;&nbsp;&gt;&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&gt;&nbsp;&gt;&nbsp;&gt;&nbsp;&gt;
&gt;&nbsp;&gt;&nbsp;&gt;&nbsp;&gt;&nbsp;I'd&nbsp;put&nbsp;the&nbsp;if-test&nbsp;outside&nbsp;of&nbsp;the&nbsp;outer&nbsp;loop&nbsp;to&nbsp;save&nbsp;cycles.
&gt;&nbsp;&gt;&nbsp;&gt;
&gt;&nbsp;&gt;&nbsp;&gt;&nbsp;Right,&nbsp;it's&nbsp;loop-invariant.&nbsp;v3&nbsp;attached&nbsp;computes&nbsp;a&nbsp;boolean
&gt;&nbsp;&gt;&nbsp;&gt;&nbsp;(nopruning),&nbsp;like&nbsp;labeltargets,&nbsp;once&nbsp;before&nbsp;the&nbsp;loop&nbsp;and&nbsp;uses&nbsp;it
&gt;&nbsp;&gt;&nbsp;&gt;&nbsp;inside.
&gt;&nbsp;&gt;&nbsp;&gt;
&gt;&nbsp;&gt;&nbsp;&gt;&nbsp;&gt;&nbsp;Other&nbsp;than&nbsp;that&nbsp;v2&nbsp;looks&nbsp;good&nbsp;to&nbsp;me.
&gt;&nbsp;&gt;&nbsp;&gt;&nbsp;&gt;
&gt;&nbsp;&gt;&nbsp;&gt;&nbsp;&gt;&nbsp;(The&nbsp;forboth&nbsp;loop&nbsp;actually&nbsp;causes&nbsp;an&nbsp;n-squared&nbsp;calculation,&nbsp;but&nbsp;it's
&gt;&nbsp;&gt;&nbsp;&gt;&nbsp;&gt;&nbsp;done&nbsp;only&nbsp;when&nbsp;pruning&nbsp;occurs,&nbsp;in&nbsp;which&nbsp;case&nbsp;the&nbsp;number&nbsp;of&nbsp;remaining
&gt;&nbsp;&gt;&nbsp;&gt;&nbsp;&gt;&nbsp;result&nbsp;relations&nbsp;would&nbsp;be&nbsp;reduced,&nbsp;so&nbsp;that&nbsp;wouldn't&nbsp;be&nbsp;a&nbsp;problem.)
&gt;&nbsp;&gt;&nbsp;&gt;
&gt;&nbsp;&gt;&nbsp;&gt;&nbsp;Right,&nbsp;though&nbsp;strictly&nbsp;the&nbsp;inner&nbsp;forboth&nbsp;scans&nbsp;node-&gt;resultRelations,
&gt;&nbsp;&gt;&nbsp;&gt;&nbsp;which&nbsp;pruning&nbsp;leaves&nbsp;at&nbsp;its&nbsp;original&nbsp;length,&nbsp;so&nbsp;it's&nbsp;the&nbsp;original
&gt;&nbsp;&gt;&nbsp;&gt;&nbsp;relation&nbsp;count&nbsp;that&nbsp;bounds&nbsp;the&nbsp;scan&nbsp;rather&nbsp;than&nbsp;the&nbsp;reduced&nbsp;one.
&gt;&nbsp;&gt;&nbsp;&gt;&nbsp;Either&nbsp;way&nbsp;it's&nbsp;EXPLAIN-only&nbsp;with&nbsp;small&nbsp;counts,&nbsp;so&nbsp;it's&nbsp;not&nbsp;a&nbsp;concern.
&gt;&nbsp;&gt;
&gt;&nbsp;&gt;&nbsp;That's&nbsp;right.
&gt;&nbsp;&gt;
&gt;&nbsp;&gt;&nbsp;The&nbsp;v3&nbsp;patch&nbsp;looks&nbsp;good&nbsp;to&nbsp;me.&nbsp;&nbsp;Thanks&nbsp;for&nbsp;updating&nbsp;the&nbsp;patch!
&gt;
&gt;&nbsp;Pushed,&nbsp;thanks&nbsp;for&nbsp;checking.

And&nbsp;crake&nbsp;turns&nbsp;green:

https://buildfarm.postgresql.org/cgi-bin/show_history.pl?nm=crake&amp;br=REL_18_STABLE

--&nbsp;
Thanks,&nbsp;Amit&nbsp;Langote

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message ZhangChi 2026-08-04 03:25:09 Re: BUG #19491: Segmentation fault triggered by IS NULL
Previous Message Zexin Li 2026-08-04 01:04:44 Re: BUG #19583: macaddr input accepts octet fields longer than 8 hex digits