Frank van Vugt <ftm(dot)van(dot)vugt(at)foxi(dot)nl> writes:
> I could reproduce this case tomorrow and inspect some variables or call
> abort() if you think that could be of any help?
Do you have hardware watchpoints on that machine? What I'd be inclined
to try is tracing through the transaction to see where
SerializableSnapshotData.xcnt or LatestSnapshotData.xcnt gets clobbered
from. It'd be mighty tedious if you have to fall back on a software
watchpoint though.
Also, I gather from the xact.c traceback that the transaction looks like
begin;
savepoint a;
...
commit; -- without releasing the savepoint
Does anything happen before the SAVEPOINT? Now that you see which
plpgsql function is failing, do you have a better shot at making
a self-contained example?
regards, tom lane