Hi,

Go up a few levels to GetMultiXactIdMembers and type "info locals", see
if we can get the values of some of the variables there. Also, if you
can turn the debugging down to -O0, that will make the results in gdb
much more reliable.

It's clear at least that "length" is negative, but what about the other
variables...

I already recompiled all with -O0 to be sure that I was able to have a backtrace. This is the full bt:

#2 0x0827b5cf in MemoryContextAlloc (context=0x856bcc8, size=4278026492) at mcxt.c:505
        __func__ = "MemoryContextAlloc"
#3 0x080b6a16 in GetMultiXactIdMembers (multi=320306, xids=0xbfbfaba4) at multixact.c:935
        pageno = 156
        prev_pageno = 156
        entryno = 819
        slotno = 2
        offptr = (MultiXactOffset *) 0x286536ac
        offset = 4235201
        length = -4235201
        i = 138425096
        nextMXact = 320308
        tmpMXact = 320307
        nextOffset = 4235265
        ptr = (TransactionId *) 0xbfbfab78


Do you use a lot of subtransactions, function, savepoints, anything
like that?

I just removed a subtransaction that I put in a function that was used to capture the deadlock errors. That subtransaction was actually useless because I removed the FOR UPDATE clause that was causing the deadlock, but the alloc error is still there. I'll try to search through the code to find some other subtransactions.


Best regards
--
Matteo Beccati
http://phpadsnew.com
http://phppgads.com

---------------------------(end of broadcast)---------------------------
TIP 9: In versions below 8.0, the planner will ignore your desire to
      choose an index scan if your joining column's datatypes do not
      match

Reply via email to