]> granicus.if.org Git - postgresql/commit
Don't let timeout interrupts happen unless ImmediateInterruptOK is set.
authorTom Lane <tgl@sss.pgh.pa.us>
Fri, 13 Dec 2013 16:50:15 +0000 (11:50 -0500)
committerTom Lane <tgl@sss.pgh.pa.us>
Fri, 13 Dec 2013 16:50:15 +0000 (11:50 -0500)
commite8312b4f03315a98a987997e05a6e9d6d8d84ddf
treeef883de581268127f6f30bddd46f0ba2566f7d3e
parent50e547096c4858a68abf09894667a542cc418315
Don't let timeout interrupts happen unless ImmediateInterruptOK is set.

Serious oversight in commit 16e1b7a1b7f7ffd8a18713e83c8cd72c9ce48e07:
we should not allow an interrupt to take control away from mainline code
except when ImmediateInterruptOK is set.  Just to be safe, let's adopt
the same save-clear-restore dance that's been used for many years in
HandleCatchupInterrupt and HandleNotifyInterrupt, so that nothing bad
happens if a timeout handler invokes code that tests or even manipulates
ImmediateInterruptOK.

Per report of "stuck spinlock" failures from Christophe Pettus, though
many other symptoms are possible.  Diagnosis by Andres Freund.
src/backend/utils/misc/timeout.c