Re: BUG #17035: assert after commit

Alvaro Herrera <alvherre@alvh.no-ip.org>

From: Alvaro Herrera <alvherre@alvh.no-ip.org>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: rekgrpth@gmail.com, pgsql-bugs@lists.postgresql.org
Date: 2021-05-26T17:40:17Z
Lists: pgsql-bugs
On 2021-May-26, Tom Lane wrote:

> PG Bug reporting form <noreply@postgresql.org> writes:
> > after this commit
> > https://github.com/postgres/postgres/commit/d18ee6f92d9a22b4fae57f515797b2196bf385c7
> > I got assert
> > TRAP: FailedAssertion("portal != NULL", File: "pquery.c", Line: 1758)
> > in my plugin
> > https://github.com/RekGRpth/pg_task
> 
> I'm inclined to think that means you were doing something you
> should not have been doing.  But without any details it's
> hard to say.

Hmm, see for example [1] which is doing SPI_prepare_my() [2] and then
SPI_execute_plan_my() ... Does the SPI interface really require that you
create an ActivePortal in the SPI-calling code?  This looks a bit
suspicious to me ...

[1] https://github.com/RekGRpth/pg_task/blob/master/work.c#L703
[2] https://github.com/RekGRpth/pg_task/blob/master/spi.c

-- 
Álvaro Herrera       Valdivia, Chile



Commits

  1. Use elog, not Assert, to report failure to provide an outer snapshot.

  2. Restore the portal-level snapshot after procedure COMMIT/ROLLBACK.