Re: BUG #19078: Segfaults in tts_minimal_store_tuple() following pg_upgrade - Mailing list pgsql-bugs

From David Rowley
Subject Re: BUG #19078: Segfaults in tts_minimal_store_tuple() following pg_upgrade
Date
Msg-id CAApHDvrFED25iQckJ6ZTdG+nnfnHtaxZ31J_U-ptCKHdY_JdnA@mail.gmail.com
Whole thread Raw
In response to Re: BUG #19078: Segfaults in tts_minimal_store_tuple() following pg_upgrade  (Yuri Zamyatin <yuri@yrz.am>)
Responses Re: BUG #19078: Segfaults in tts_minimal_store_tuple() following pg_upgrade
List pgsql-bugs
On Thu, 16 Oct 2025 at 03:21, Yuri Zamyatin <yuri@yrz.am> wrote:
> create.sql:
> > drop database if exists segtest;
> > create database segtest;
> > \c segtest;
> > create table tcv_scene_datas(cv_scene_id bigint primary key) partition by range (cv_scene_id);
> > do $$
> > declare
> >     i int;
> >     range_start bigint;
> >     range_end bigint;
> >     partition_name text;
> > begin
> >     for i in 0..100 loop
> >         range_start := 1 + (i * 10000);
> >         range_end := range_start + 10000;
> >         partition_name := 'tcv_scene_datas_' || LPAD(i::TEXT, 3, '0');
> >         execute format(
> >             'create table %I partition of tcv_scene_datas for values from (%s) to (%s)',
> >             partition_name,
> >             range_start,
> >             range_end
> >         );
> >     end loop;
> > end $$;
> > insert into tcv_scene_datas(cv_scene_id) select id from generate_series(1,1_000_000) id;
>
> crash.sql:
> > \c segtest
> > with ids as (select (random()*1_000_000)::int id from generate_series(1,1000))
> > update tcv_scene_datas set cv_scene_id=cv_scene_id where cv_scene_id in(select id from ids);
>
> Launch crash.sql in 16 threads of infinite loops:
> > seq 16 | xargs -P 16 -I {} sh -c 'while true; do psql -f crash.sql; done'
>
> In 1-2 minutes, 5 processes died with segfault.

Perfect. Thank you.

It seems to be some more forgotten EPQ stuff from d47cbf474.  Amit got
some of these in 8741e48e5, but evidently the test case didn't do
pruning during execution, (only init plan pruning) so the partition
directory wasn't needed.

The attached seems to fix it for me.

David

Attachment

pgsql-bugs by date:

Previous
From: Tom Lane
Date:
Subject: Re: BUG #19086: pg_dump --data-only selects and do not uses index definitions for the dumped tables.
Next
From: David Rowley
Date:
Subject: Re: BUG #19078: Segfaults in tts_minimal_store_tuple() following pg_upgrade