diff options
author | Mason Sharp | 2015-03-15 17:54:00 +0000 |
---|---|---|
committer | Pavan Deolasee | 2015-04-15 05:49:17 +0000 |
commit | a19e2634cf872ca28175a212335231fe8469a807 (patch) | |
tree | 6535a65107313a64e48fa8016fbfb32cd1b0ae4e /src | |
parent | 49e0e1cbc28140f30ee4ca6884f679b1020aedf7 (diff) |
Fix a race condition where a queue has already been cleaned up.
Diffstat (limited to 'src')
-rw-r--r-- | src/backend/pgxc/squeue/squeue.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/backend/pgxc/squeue/squeue.c b/src/backend/pgxc/squeue/squeue.c index 655cf32527..fbe20d4a23 100644 --- a/src/backend/pgxc/squeue/squeue.c +++ b/src/backend/pgxc/squeue/squeue.c @@ -948,6 +948,13 @@ SharedQueueReset(SharedQueue squeue, int consumerIdx) { SQueueSync *sqsync = squeue->sq_sync; + /* + * We may have already cleaned up, but then an abort signalled us to clean up. + * Avoid segmentation fault on abort + */ + if (!sqsync) + return; + if (consumerIdx == -1) { int i; |