I just saw the parallel regression tests hang up again. Inspection revealed that StrategyInvalidateBuffer() was stuck in an infinite loop because the freelist was circular.
(gdb) p StrategyControl->listFreeBuffers $5 = 579 (gdb) p BufferDescriptors[579] $6 = {bufNext = 106, data = 4991904, tag = {rnode = {tblNode = 17142, relNode = 143947}, blockNum = 0}, buf_id = 579, flags = 14, refcount = 0, io_in_progress_lock = 1179, cntx_lock = 1180, cntxDirty = 0 '\000', wait_backend_id = 0} (gdb) p BufferDescriptors[106] $7 = {bufNext = 684, data = 1117088, tag = {rnode = {tblNode = 17142, relNode = 143989}, blockNum = 0}, buf_id = 106, flags = 14, refcount = 0, io_in_progress_lock = 233, cntx_lock = 234, cntxDirty = 0 '\000', wait_backend_id = 0} (gdb) p BufferDescriptors[684] $8 = {bufNext = 579, data = 5852064, tag = {rnode = {tblNode = 17142, relNode = 143929}, blockNum = 0}, buf_id = 684, flags = 14, refcount = 0, io_in_progress_lock = 1389, cntx_lock = 1390, cntxDirty = 0 '\000', wait_backend_id = 0} (gdb) Don't have time to chase it right now, but you should know that there's still a low-probability bug in there. regards, tom lane ---------------------------(end of broadcast)--------------------------- TIP 9: the planner will ignore your desire to choose an index scan if your joining column's datatypes do not match