Re: BUG #18598: AddressSanitizer detects use after free inside json_unique_hash_match()

From: Tomas Vondra <tomas(at)vondra(dot)me>
To: exclusion(at)gmail(dot)com, pgsql-bugs(at)lists(dot)postgresql(dot)org, PG Bug reporting form <noreply(at)postgresql(dot)org>
Subject: Re: BUG #18598: AddressSanitizer detects use after free inside json_unique_hash_match()
Date: 2024-09-04 07:21:10
Message-ID: 98481f61-abf6-46df-8e83-82f6ff66cefb@vondra.me
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs pgsql-hackers

On 9/1/24 21:00, PG Bug reporting form wrote:
> The following bug has been logged on the website:
>
> Bug reference: 18598
> Logged by: Alexander Lakhin
> Email address: exclusion(at)gmail(dot)com
> PostgreSQL version: 17beta3
> Operating system: Ubuntu 22.04
> Description:
>
> The following query:
> SELECT JSON_OBJECTAGG(i: (i)::text FORMAT JSON WITH UNIQUE)
> FROM generate_series(1, 100000) i;
>
> triggers an asan-detected error:
> ==973230==ERROR: AddressSanitizer: heap-use-after-free on address
> 0x7fde473f4428 at pc 0x558af80f20a6 bp 0x7ffe6b8e2df0 sp 0x7ffe6b8e2598
> READ of size 7 at 0x7fde473f4428 thread T0
> #0 0x558af80f20a5 in __interceptor_strncmp.part.0
> (.../usr/local/pgsql/bin/postgres+0x32d40a5)
> #1 0x558af9ed5276 in json_unique_hash_match
> ...
>
> Reproduced starting from 7081ac46a.
>

FWIW I can reproduce this using valgrind, with the same stacks reported.

This feels very much like a classical memory context bug - pointing to
memory in a short-lived memory context. I see datum_to_json_internal()
allocates the result in ExprContext, and that's bound to be reset pretty
often. But I'm not too familiar with the JSON aggregate stuff enough to
pinpoint what it does wrong.

regards

--
Tomas Vondra

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message PG Bug reporting form 2024-09-04 09:21:11 BUG #18600: Getting wait_type_event as IPC:BTreePage for count queries
Previous Message David Rowley 2024-09-04 05:05:01 Re: BUG #18599: server closed the connection unexpectedly

Browse pgsql-hackers by date

  From Date Subject
Next Message Dean Rasheed 2024-09-04 07:22:40 Re: Optimize mul_var() for var1ndigits >= 8
Previous Message jian he 2024-09-04 06:54:00 Re: altering a column's collation leaves an invalid foreign key