| From: | Osama Abdul Qader <osamaabdulqader(dot)cs(at)gmail(dot)com> |
|---|---|
| To: | Alexander Lakhin <exclusion(at)gmail(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)postgresql(dot)org> |
| Subject: | Re: Regress test might fail due to deadlock between domain and alter_table |
| Date: | 2026-10-08 09:37:32 |
| Message-ID: | CAC+8b5hyprWooY33Y86_V2LujeYo6TAr3Ak_EnTnYLrNnMLh8A@mail.gmail.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-hackers |
Hi,
I'm currently investigating a reproducible deadlock involving concurrent
regression tests (alter_table and domain), starting from commit 8319e5cb5.
While setting up a clean PostgreSQL 20devel environment to reproduce the
issue, I ran into a separate bootstrap failure that I'm having trouble
explaining.
I rebuilt and installed the current source tree, and verified that both
binaries report PostgreSQL 20devel. I also verified that bthandler() in
src/backend/access/nbtree/nbtree.c returns a static IndexAmRoutine, and
that the generated FMGR table maps OID 330 to bthandler.
However, a completely fresh cluster fails during initdb:
$ rm -rf ~/pgdata-repro
$ ~/pg-install/bin/initdb -D ~/pgdata-repro
running bootstrap script ...
FATAL: index access method handler function 330 did not return an
IndexAmRoutine struct
PANIC: cannot abort transaction 1, it was already committed
Aborted (core dumped)
initdb: removing data directory "/home/osama/pgdata-repro"
The relevant check appears to be in src/backend/access/index/amapi.c:
datum = OidFunctionCall0(amhandler);
routine = (const IndexAmRoutine *) DatumGetPointer(datum);
if (routine == NULL || !IsA(routine, IndexAmRoutine))
elog(ERROR, "index access method handler function %u did not
return an IndexAmRoutine struct",
amhandler);
I have not modified nbtree.c, and the generated catalog contains:
330 bthandler ... bthandler
and fmgrtab.c contains:
{ 330, 1, true, false, "bthandler", bthandler },
I initially suspected a stale build, but I forced a rebuild of the nbtree
code and backend, reinstalled, and the failure persisted.
Could you point me toward what might cause bthandler() to fail the IsA(routine,
IndexAmRoutine) check during bootstrap?
I want to make sure my development build is sound before continuing with
the deadlock reproduction.
Thanks,
Osama Abdul Qader
On Thu, Oct 8, 2026 at 1:15 PM Osama Abdul Qader <
osamaabdulqader(dot)cs(at)gmail(dot)com> wrote:
> Hi Alexander,
>
> Sure, I'll cooperate with you and also the senior hacker who is in charge
> of committing the patches, surely it's a nice day to work with you.
>
> Let us solve these issues and make our work scream in PostgreSQL commit
> history.
>
> With best regards,
> Osama Abdul Qader
>
> On Thu, Oct 8, 2026 at 10:30 AM Alexander Lakhin <exclusion(at)gmail(dot)com>
> wrote:
>
>> Hello Osama,
>>
>> [ writing this off-list to minimize noise ]
>>
>> 07.10.2026 23:24, Osama Abdul Qader wrote:
>>
>> Hi Alexander,
>>
>> Hope that you are well.
>>
>> I'm Osama Abdul Qader, currently working as an independent postgresql
>> contributor, I'm writing this email to express my interest in working with
>> you to fix this bug by producing the patch for it, I've already produced a
>> patch which was committed by Alvaro Hererra on September 8 [1].
>>
>> I have reviewed the work of Jan Nidzwetzki [2].
>>
>> Can't wait for morning (as I'm from Hyderabad, India and it's currently
>> 01:50AM here) to work on the bug patch.
>>
>>
>> I'm not a committer (unlike Alvaro), so I think you would need to
>> cooperate with some of senior hackers who will eventually push the
>> patch anyway. To me, it looks like a tricky issue and I have no idea yet
>> how to fix it properly, so if you want to work on this, please step in.
>>
>> Looking forward to your patch or deeper investigation on the mailing list.
>>
>> Best regards,
>> Alexander
>>
>
| From | Date | Subject | |
|---|---|---|---|
| Previous Message | Hannu Krosing | 2026-10-08 09:35:27 | [PATCH] Extensible ReadyForQuery wire protocol message and C hook, for connection pools and WAIT FOR LSN |