Re: BUG #17774: Assert triggered on brin_minmax_multi.c

From: John Naylor <john(dot)naylor(at)enterprisedb(dot)com>
To: tharakan(at)gmail(dot)com, pgsql-bugs(at)lists(dot)postgresql(dot)org
Subject: Re: BUG #17774: Assert triggered on brin_minmax_multi.c
Date: 2023-02-08 09:26:49
Message-ID: CAFBsxsEMigeTVhBOpsBHw+SJS1n776akNqVC8ATEDmGo_OPgrw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

On Mon, Feb 6, 2023 at 3:06 PM PG Bug reporting form <noreply(at)postgresql(dot)org>
wrote:
> This assert() is not easily reproducible, but thought the backtraces may
be
> interesting.
>
> TRAP: FailedAssertion("(delta >= 0) && (delta <= 1)", File:
> "brin_minmax_multi.c", Line: 2393, PID: 2922100)

> #2 0x000055e143f0ae8b in ExceptionalCondition (
> conditionName=0x55e143f92604 "(delta >= 0) && (delta <= 1)",
> errorType=0x55e143f91ef4 "FailedAssertion",
> fileName=0x55e143f91ee0 "brin_minmax_multi.c", lineNumber=2393)
> at assert.c:69
> No locals.
> #3 0x000055e1437e8972 in brin_minmax_multi_distance_inet (
> fcinfo=0x7ffc448234f0) at brin_minmax_multi.c:2393
> delta = -2.3283064365386963e-10
> i = -1
> len = 4
> addra = 0x55e14ee95fc0 ""
> addrb = 0x55e14ee95fe0 ""
> ipa = 0x55e14d95a1e0
> ipb = 0x55e149a6fdc8
> lena = 0
> lenb = 32

Thanks for the report! From the stack trace we can see that it computed a
negative delta, coming from:

/* Calculate the difference between the addresses. */
delta = 0;
for (i = len - 1; i >= 0; i--)
{
unsigned char a = addra[i];
unsigned char b = addrb[i];

delta += (float8) b - (float8) a;
delta /= 256;
}
Assert((delta >= 0) && (delta <= 1));

I wonder if it needs to be something like "delta += Abs((float8) b -
(float8) a);".

--
John Naylor
EDB: http://www.enterprisedb.com

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Dmitry Dolgov 2023-02-08 10:06:58 Re: BUG #17774: Assert triggered on brin_minmax_multi.c
Previous Message Richard Guo 2023-02-08 09:15:24 Re: BUG #17781: Assert in setrefs.c