Re: pg15b4: FailedAssertion("TransactionIdIsValid(xmax)

From: Justin Pryzby <pryzby(at)telsasoft(dot)com>
To: Zhang Mingli <zmlpostgres(at)gmail(dot)com>
Cc: pgsql-hackers(at)postgresql(dot)org
Subject: Re: pg15b4: FailedAssertion("TransactionIdIsValid(xmax)
Date: 2022-09-10 05:01:43
Message-ID: 20220910050143.GT31833@telsasoft.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Sat, Sep 10, 2022 at 12:07:30PM +0800, Zhang Mingli wrote:
> That’s interesting, dig into it for a while but not too much progress.
>
> Maybe we could add some logs to print MultiXactMembers’ xid and status if xid is 0.
>
> Inside MultiXactIdGetUpdateXid()
>
> ```
> nmembers = GetMultiXactIdMembers(xmax, &members, false, false);
>
> if (nmembers > 0)
> {
>  int i;
>
>  for (i = 0; i < nmembers; i++)
>  {
>  /* Ignore lockers */
>  if (!ISUPDATE_from_mxstatus(members[i].status))
>  continue;
>
>  /* there can be at most one updater */
>  Assert(update_xact == InvalidTransactionId);
>  update_xact = members[i].xid;
>
> // log here if xid is invalid

> #ifndef USE_ASSERT_CHECKING
>
>  /*
>  * in an assert-enabled build, walk the whole array to ensure
>  * there's no other updater.
>  */
>  break;
> #endif
>  }
>
>  pfree(members);
> }
> // and here if didn’t update update_xact at all (it shouldn’t happen as designed)

Yeah. I added assertions for the above case inside the loop, and for
this one, and this fails right before "return".

TRAP: FailedAssertion("update_xact != InvalidTransactionId", File: "src/backend/access/heap/heapam.c", Line: 6939, PID: 4743)

It looks like nmembers==2, both of which are lockers and being ignored.

> And could we see multixact reply in logs if db does recover?

Do you mean waldump or ??

BTW, after a number of sigabrt's, I started seeing these during
recovery:

< 2022-09-09 19:44:04.180 CDT >LOG: unexpected pageaddr 1214/AF0FE000 in log segment 0000000100001214000000B4, offset 1040384
< 2022-09-09 23:20:50.830 CDT >LOG: unexpected pageaddr 1214/CF65C000 in log segment 0000000100001214000000D8, offset 6668288

--
Justin

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Justin Pryzby 2022-09-10 05:44:40 Re: pg15b4: FailedAssertion("TransactionIdIsValid(xmax)
Previous Message walker 2022-09-10 04:53:30 pg_toast.pg_toast_relfilenode not exist due to vacuum full tablename