Re: BUG #18031: Segmentation fault after deadlock within VACUUM's parallel worker

From: Alexander Lakhin <exclusion(at)gmail(dot)com>
To: Masahiko Sawada <sawada(dot)mshk(at)gmail(dot)com>, pgsql-bugs(at)lists(dot)postgresql(dot)org
Cc: Andres Freund <andres(at)anarazel(dot)de>
Subject: Re: BUG #18031: Segmentation fault after deadlock within VACUUM's parallel worker
Date: 2023-07-22 10:00:00
Message-ID: f0f5ab8f-5e3c-edd1-d6ab-d23263759f53@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

Hello Sawada-san,

21.07.2023 11:01, Masahiko Sawada wrote:
> ...
> leading to calling RemoveFromWaitQueue() again. I think we should use
> dclist_delete_from_thoroughly() instead. With the attached patch, the
> issue doesn't happen in my environment.

Thank you for the analysis and the patch! It fixes the issue for me too.

> Another thing I noticed is that the Assert(waitLock) in
> RemoveFromWaitQueue() is useless actually, since we access *waitLock
> before that:

Yeah, I also noticed that, and a simple grep-based script with a little
eyeballing discovered one similar Assert usage:

void
llvm_split_symbol_name(const char *name, char **modname, char **funcname)
{
...
        *funcname = rindex(name, '.');
        (*funcname)++;            /* jump over . */

        *modname = pnstrdup(name + strlen("pgextern."),
                            *funcname - name - strlen("pgextern.") - 1);
        Assert(funcname);

May be it's worth to fix it in passing.

Best regards,
Alexander

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Masahiko Sawada 2023-07-24 01:39:54 Re: BUG #18031: Segmentation fault after deadlock within VACUUM's parallel worker
Previous Message Amit Kapila 2023-07-22 05:25:53 Re: BUG #18027: Logical replication taking forever