Re: Missing error_context_stack = NULL in AutoVacWorkerMain()

From: Michael Paquier <michael(at)paquier(dot)xyz>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: Ashwin Agrawal <aagrawal(at)pivotal(dot)io>, PostgreSQL mailing lists <pgsql-hackers(at)postgresql(dot)org>, Paul Guo <paulguo(at)gmail(dot)com>
Subject: Re: Missing error_context_stack = NULL in AutoVacWorkerMain()
Date: 2019-10-21 04:56:52
Message-ID: 20191021045652.GA2609@paquier.xyz
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Mon, Oct 21, 2019 at 12:47:40AM -0400, Tom Lane wrote:
> This seems like a real and possibly serious bug to me. Backend sigsetjmp
> callers *must* clear error_context_stack (or restore it to a previous
> value), because if it isn't NULL it's surely pointing at garbage, ie a
> local variable that's no longer part of the valid stack.

Sure. From my recollection of memories we never set it in autovacuum
code paths (including index entry deletions), so I don't think that we
have an actual live bug here.

> The issue might be argued to be insignificant because the autovacuum
> worker is just going to do proc_exit anyway. But if it encountered
> another error during proc_exit, elog.c might try to invoke error
> callbacks using garbage callback data.
>
> In short, I think we'd better back-patch too.

Okay, no objections to back-patch.
--
Michael

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Tom Lane 2019-10-21 05:01:50 Re: Missing error_context_stack = NULL in AutoVacWorkerMain()
Previous Message Tom Lane 2019-10-21 04:53:27 Re: Missing error_context_stack = NULL in AutoVacWorkerMain()