• Tom Lane's avatar
    Several changes to reduce the probability of running out of memory during · 395249ec
    Tom Lane authored
    AbortTransaction, which would lead to recursion and eventual PANIC exit
    as illustrated in recent report from Jeff Davis.  First, in xact.c create
    a special dedicated memory context for AbortTransaction to run in.  This
    solves the problem as long as AbortTransaction doesn't need more than 32K
    (or whatever other size we create the context with).  But in corner cases
    it might.  Second, in trigger.c arrange to keep pending after-trigger event
    records in separate contexts that can be freed near the beginning of
    AbortTransaction, rather than having them persist until CleanupTransaction
    as before.  Third, in portalmem.c arrange to free executor state data
    earlier as well.  These two changes should result in backing off the
    out-of-memory condition before AbortTransaction needs any significant
    amount of memory, at least in typical cases such as memory overrun due
    to too many trigger events or too big an executor hash table.  And all
    the same for subtransaction abort too, of course.
    395249ec
xact.c 112 KB