Re: BUG #17254: Crash with 0xC0000409 in pg_stat_statements when pg_stat_tmp\pgss_query_texts.stat exceeded 2GB.
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: Juan José Santamaría Flecha <juanjo.santamaria@gmail.com>
Cc: egashira.yusuke@fujitsu.com,
PostgreSQL mailing lists <pgsql-bugs@lists.postgresql.org>
Date: 2021-10-31T17:07:42Z
Lists: pgsql-bugs
Attachments
- avoid-windows-failure-on-huge-read.patch (text/x-diff) patch
I wrote: > =?UTF-8?Q?Juan_Jos=C3=A9_Santamar=C3=ADa_Flecha?= <juanjo.santamaria@gmail.com> writes: >> On Sat, Oct 30, 2021 at 6:26 PM Tom Lane <tgl@sss.pgh.pa.us> wrote: >>> I think instead, we need to turn the subsequent one-off read() call into a >>> loop that reads no more than INT_MAX bytes at a time. It'd be possible >>> to restrict that to Windows, but probably no harm in doing it the same >>> way everywhere. >> Seems reasonable to me, can such a change be back-patched? > Don't see why not. Here's a quick patch for that. I don't have any ability to check it on Windows, but the logic is easy to verify by reducing the arbitrary constant to something small. (I used 1GB, not INT_MAX, because I figured we ought to read in multiples of a filesystem block if possible.) regards, tom lane
Commits
-
Don't try to read a multi-GB pg_stat_statements file in one call.
- fdb60ca83d03 9.6.24 landed
- d87d5f8d8d3a 10.19 landed
- a667b0668378 15.0 landed
- 7104e0b2457d 14.1 landed
- 5dd067430b9d 11.14 landed
- 3a5b313ce748 13.5 landed
- 16d0da5c8dda 12.9 landed