>Just a note here. After examining the core dump I did notice something.
>While in XidInMVCCSnapshot call the snapshot->suboverflowed is set true >although subxip == NULL and subxcnt == 0. As far as I understand, >snapshot->suboverflowed is set true in the GetRunningTransactionData >call. >And then I decided to put elog around CurrentRunningXacts->subxcnt's >assigment. >diff --git a/src/backend/storage/ipc/procarray.c >b/src/backend/storage/ipc/procarray.c >index 42a89fc5dc9..3d2db02f580 100644 >--- a/src/backend/storage/ipc/procarray.c >+++ b/src/backend/storage/ipc/procarray.c >@@ -2781,6 +2781,9 @@ GetRunningTransactionData(void) > * increases if slots do. > */ >+ if (suboverflowed) >+ elog(WARNING, " >>> CurrentRunningXacts->subxid_overflow >is true"); >+ > CurrentRunningXacts->xcnt = count - subcount; > CurrentRunningXacts->subxcnt = subcount; > CurrentRunningXacts->subxid_overflow = suboverflowed; >... and did get a bunch of messages. I.e. subxid_overflow is set true >very often. >I've increased the value of PGPROC_MAX_CACHED_SUBXIDS. Once it becomes >more than 120 there are no messages and no failed assertions are >provided any more. Please, avoid using decimal based values. 128 is multiple of 64. See : https://github.com/trevstanhope/scratch/blob/master/C/docs/O%27Reilly%20-%20Practical%20C%20Programming%203rd%20Edition.pdf 15.6.1 The Power of Powers of 2 regards, Ranier Vilela