Thread: Failing assertion in predicate.c
Hi pg-hackers,
I am encountering an assertion failure in predicate.c when running a high volume of short serializable transactions. The error occurs during stress testing with many concurrent connections.
I have replicated this issue on two separate macOS M1 systems, but I have not been able to reproduce it on Linux. The issue arises in both PostgreSQL 16 and 17. Interestingly, introducing a delay of just 1 ms between statements seems to prevent the assertion from failing.
The specific failure I encounter is:
I am encountering an assertion failure in predicate.c when running a high volume of short serializable transactions. The error occurs during stress testing with many concurrent connections.
I have replicated this issue on two separate macOS M1 systems, but I have not been able to reproduce it on Linux. The issue arises in both PostgreSQL 16 and 17. Interestingly, introducing a delay of just 1 ms between statements seems to prevent the assertion from failing.
The specific failure I encounter is:
```
TRAP: failed Assert("TransactionIdIsValid(tailXid)"), File: "predicate.c", Line: 885, PID: 1350
--
```
For anyone interested, I have created a reproduction program available here: https://github.com/yrashk/pg-predicate-tailxid-assertion-issue. The program establishes a connection pool and issues simple INSERT statements, each wrapped in its own serializable transaction.
I would appreciate any insights into this issue or potential steps for further debugging.
Founder at Omnigres
Hi, Yurii!
Please look at the bug report, I filed yesterday almost simultaneously with you: https://www.postgresql.org/message-id/18658-7dab125ec688c70b%40postgresql.org
Please look at the bug report, I filed yesterday almost simultaneously with you: https://www.postgresql.org/message-id/18658-7dab125ec688c70b%40postgresql.org
On Thu, Oct 17, 2024 at 12:49 PM Yurii Rashkovskii <yrashk@omnigres.com> wrote:
Hi pg-hackers,
I am encountering an assertion failure in predicate.c when running a high volume of short serializable transactions. The error occurs during stress testing with many concurrent connections.
I have replicated this issue on two separate macOS M1 systems, but I have not been able to reproduce it on Linux. The issue arises in both PostgreSQL 16 and 17. Interestingly, introducing a delay of just 1 ms between statements seems to prevent the assertion from failing.
The specific failure I encounter is:```TRAP: failed Assert("TransactionIdIsValid(tailXid)"), File: "predicate.c", Line: 885, PID: 1350```For anyone interested, I have created a reproduction program available here: https://github.com/yrashk/pg-predicate-tailxid-assertion-issue. The program establishes a connection pool and issues simple INSERT statements, each wrapped in its own serializable transaction.I would appreciate any insights into this issue or potential steps for further debugging.
--Founder at Omnigres