]> 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:25 +0000 (11:50 -0500)
commit478af9b79770da43a2d89fcc5872d09a2d8731f8
treeef5cdc5c170648e37aa236d73e28751610a03305
parent615299cf63a730f9e170532c4782cd5a4a06a7ac
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