Обсуждение: BUG #19336: TRAP: failed Assert("!IsTransactionOrTransactionBlock()")

Поиск
Список
Период
Сортировка

BUG #19336: TRAP: failed Assert("!IsTransactionOrTransactionBlock()")

От
PG Bug reporting form
Дата:
The following bug has been logged on the website:

Bug reference:      19336
Logged by:          Nikita Kalinin
Email address:      n.kalinin@postgrespro.ru
PostgreSQL version: 18.1
Operating system:   ubuntu 22.04
Description:

With this parameter in postgresql.conf: debug_parallel_query = on

If you execute the query: SELECT pg_sleep_for('5 minutes');

and then kill the postgres process with signal 9, you get the following in
the log:

2025-11-27 06:44:27.263 UTC [643318] FATAL:  postmaster exited during a
parallel transaction
TRAP: failed Assert("!IsTransactionOrTransactionBlock()"), File: "pgstat.c",
Line: 673, PID: 643318
/lib/x86_64-linux-gnu/libasan.so.8(+0x831e0)[0x7058d98831e0]
postgres: test postgres 127.0.0.1(44374)
SELECT(ExceptionalCondition+0x156)[0x616e63da3dcf]
postgres: test postgres 127.0.0.1(44374)
SELECT(pgstat_report_stat+0x43)[0x616e635c9ced]
postgres: test postgres 127.0.0.1(44374) SELECT(+0x51c29fe)[0x616e635c99fe]
postgres: test postgres 127.0.0.1(44374)
SELECT(shmem_exit+0x29f)[0x616e633beca2]
postgres: test postgres 127.0.0.1(44374) SELECT(+0x4fb7750)[0x616e633be750]

Maybe the Assert shouldn't be printed to the log, and only the following
output should remain?
postgres=# SELECT pg_sleep_for('5 minutes');
server closed the connection unexpectedly
        This probably means the server terminated abnormally
        before or while processing the request.
The connection to the server was lost. Attempting reset: Failed.
The connection to the server was lost. Attempting reset: Failed.


Re: BUG #19336: TRAP: failed Assert("!IsTransactionOrTransactionBlock()")

От
Álvaro Herrera
Дата:
On 2025-Nov-27, PG Bug reporting form wrote:

> With this parameter in postgresql.conf: debug_parallel_query = on
> 
> If you execute the query: SELECT pg_sleep_for('5 minutes');
> 
> and then kill the postgres process with signal 9, you get the following in
> the log:
> 
> 2025-11-27 06:44:27.263 UTC [643318] FATAL:  postmaster exited during a
> parallel transaction
> TRAP: failed Assert("!IsTransactionOrTransactionBlock()"), File: "pgstat.c",
> Line: 673, PID: 643318
> /lib/x86_64-linux-gnu/libasan.so.8(+0x831e0)[0x7058d98831e0]
> postgres: test postgres 127.0.0.1(44374)
> SELECT(ExceptionalCondition+0x156)[0x616e63da3dcf]
> postgres: test postgres 127.0.0.1(44374)
> SELECT(pgstat_report_stat+0x43)[0x616e635c9ced]
> postgres: test postgres 127.0.0.1(44374) SELECT(+0x51c29fe)[0x616e635c99fe]
> postgres: test postgres 127.0.0.1(44374)
> SELECT(shmem_exit+0x29f)[0x616e633beca2]
> postgres: test postgres 127.0.0.1(44374) SELECT(+0x4fb7750)[0x616e633be750]
> 
> Maybe the Assert shouldn't be printed to the log, and only the following
> output should remain?

Hmm, why does it matter?  If you've kill -9'd the process, everything
will be restarted anyway.  It makes no difference whether the assertion
hits or not, does it?

-- 
Álvaro Herrera         PostgreSQL Developer  —  https://www.EnterpriseDB.com/
"Las navajas y los monos deben estar siempre distantes"   (Germán Poo)