aboutsummaryrefslogtreecommitdiff
path: root/src/backend/access/gist
diff options
context:
space:
mode:
authorAndres Freund <andres@anarazel.de>2014-10-01 14:23:43 +0200
committerAndres Freund <andres@anarazel.de>2014-10-01 14:34:06 +0200
commitcbd9619aca44c2a1991076325612302118ee6975 (patch)
treeb5f93c89624119bc02c9e64fa6b9740fc615d72b /src/backend/access/gist
parent9adda98c7738f5a8d4fdaa5a7a5bfb3f11c94899 (diff)
downloadpostgresql-cbd9619aca44c2a1991076325612302118ee6975.tar.gz
postgresql-cbd9619aca44c2a1991076325612302118ee6975.zip
Block signals while computing the sleep time in postmaster's main loop.
DetermineSleepTime() was previously called without blocked signals. That's not good, because it allows signal handlers to interrupt its workings. DetermineSleepTime() was added in 9.3 with the addition of background workers (da07a1e856511), where it only read from BackgroundWorkerList. Since 9.4, where dynamic background workers were added (7f7485a0cde), the list is also manipulated in DetermineSleepTime(). That's bad because the list now can be persistently corrupted if modified by both a signal handler and DetermineSleepTime(). This was discovered during the investigation of hangs on buildfarm member anole. It's unclear whether this bug is the source of these hangs or not, but it's worth fixing either way. I have confirmed that it can cause crashes. It luckily looks like this only can cause problems when bgworkers are actively used. Discussion: 20140929193733.GB14400@awork2.anarazel.de Backpatch to 9.3 where background workers were introduced.
Diffstat (limited to 'src/backend/access/gist')
0 files changed, 0 insertions, 0 deletions