Обсуждение: BUG #19054: Memory exhaustion vulnerability in PostgreSQL array operations leads to server crash

Поиск
Список
Период
Сортировка

BUG #19054: Memory exhaustion vulnerability in PostgreSQL array operations leads to server crash

От
PG Bug reporting form
Дата:
The following bug has been logged on the website:

Bug reference:      19054
Logged by:          sibo wu
Email address:      sibowu@amazon.com
PostgreSQL version: 17.6
Operating system:   mac
Description:

PostgreSQL's array implementation can lead to server crashes due to
uncontrolled memory consumption during array operations. When performing
continuous array modifications within a loop, the server eventually exhausts
available memory and crashes, affecting all connected sessions.
psql (17.6)
Type "help" for help.
DO
$$
DECLARE
  a_1  text[];
  a text;
  i bigint default 1;
BEGIN
  a := repeat('A',pow(2,29)::int);
  while true
  loop
    a_1[i] := a;
    i := i + 1;
  END LOOP;
END
$$;

server closed the connection unexpectedly
        This probably means the server terminated abnormally
        before or while processing the request.
The connection to the server was lost. Attempting reset: Failed.
The connection to the server was lost. Attempting reset: Failed.
!?> quit


On Mon, 2025-09-15 at 20:00 +0000, PG Bug reporting form wrote:
> PostgreSQL's array implementation can lead to server crashes due to
> uncontrolled memory consumption during array operations. When performing
> continuous array modifications within a loop, the server eventually exhausts
> available memory and crashes, affecting all connected sessions.

That's not a bug, that's a user error.
For reliable operation, you have to disable Linux' memory overcommit.
Then the kernel won't kill the database, but your query will receive an
"out of memory" error and fail without any crashes.

Yours,
Laurenz Albe