]> granicus.if.org Git - postgresql/commit
Prevent interrupts while reporting non-ERROR elog messages.
authorTom Lane <tgl@sss.pgh.pa.us>
Fri, 14 Mar 2014 00:59:51 +0000 (20:59 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Fri, 14 Mar 2014 00:59:51 +0000 (20:59 -0400)
commitf16ca975500b7aab5026f164b1bc7bf833e2190b
tree10dcf33f3c3d0baacb7e7e573b57ffec2b4a163f
parent7bfdf10f5aa33b9878a24d618dca75e9f60255d9
Prevent interrupts while reporting non-ERROR elog messages.

This should eliminate the risk of recursive entry to syslog(3), which
appears to be the cause of the hang reported in bug #9551 from James
Morton.

Arguably, the real problem here is auth.c's willingness to turn on
ImmediateInterruptOK while executing fairly wide swaths of backend code.
We may well need to work at narrowing the code ranges in which the
authentication_timeout interrupt is enabled.  For the moment, though,
this is a cheap and reasonably noninvasive fix for a field-reported
failure; the other approach would be complex and not necessarily
bug-free itself.

Back-patch to all supported branches.
src/backend/utils/error/elog.c