From f170322f381dce4c35a146300bc5687ec984fc9d Mon Sep 17 00:00:00 2001 From: Hamid Akhtar Date: Tue, 3 Jan 2023 01:40:51 +0500 Subject: [PATCH] PG-576 - Segmentation fault caused by pg_stat_monitor unique queryid creation mechanism. Resolving the crash identified by regression and reported by Naeem. This fix resolves the issue with incorrect query length in case of normalized query when the query length exceeds PGSM_QUERY_MAX_LEN. Resolving the crash identify by regression and reported by Naeem. --- pg_stat_monitor.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/pg_stat_monitor.c b/pg_stat_monitor.c index 3219cfa..6be3568 100644 --- a/pg_stat_monitor.c +++ b/pg_stat_monitor.c @@ -1520,7 +1520,11 @@ pgss_store(uint64 queryid, pgsm_query_id = pgss_hash_string(norm_query, norm_query_len); /* Free up norm_query if we don't intend to show normalized version in the view */ - if (!PGSM_NORMALIZED_QUERY) + if (PGSM_NORMALIZED_QUERY) + { + query_len = norm_query_len; + } + else { if (norm_query) pfree(norm_query); @@ -1559,7 +1563,7 @@ pgss_store(uint64 queryid, queryid, pgss_qbuf, norm_query ? norm_query : query, - norm_query ? norm_query_len : query_len, + query_len, &query_entry->query_pos)) { LWLockRelease(pgss->lock);