public inbox for [email protected]
help / color / mirror / Atom feedFrom: Michael Paquier <[email protected]>
To: Heikki Linnakangas <[email protected]>
Cc: [email protected] <[email protected]>
Subject: Re: Shmem allocated wrong for custom cumulative stats
Date: Mon, 6 Apr 2026 12:14:06 +0900
Message-ID: <[email protected]> (raw)
In-Reply-To: <[email protected]>
References: <[email protected]>
<[email protected]>
<[email protected]>
On Mon, Apr 06, 2026 at 11:36:21AM +0900, Michael Paquier wrote:
> On Mon, Apr 06, 2026 at 09:55:14AM +0900, Michael Paquier wrote:
>> Right, down to v18 where this has been introduced. That's my bug, so
>> I'd be OK to take care of it myself, if you are OK with that of
>> course.
>
> Note: something is wrong with -m32, for both patches. Digging into
> that..
And I have been puzzled for a few minutes here, trying to figure out
if this was something in v18 or something with the new shmem routines.
It is nothing of the kind: test_custom_stats has been underestimating
its shared_size, using PgStat_StatCustomFixedEntry instead of
PgStatShared_CustomFixedEntry. Interesting copy-pasto, HEAD-only,
second bug.
The attached is working correctly. The v18 flavor is slightly
simpler.
--
Michael
From 943746c5b430b485e15c44a0b7bf099454cee7dd Mon Sep 17 00:00:00 2001
From: Michael Paquier <[email protected]>
Date: Mon, 6 Apr 2026 09:47:02 +0900
Subject: [PATCH v3] Use the allocated space properly for custom stats kind
---
src/backend/utils/activity/pgstat_shmem.c | 7 ++++---
.../modules/test_custom_stats/test_custom_fixed_stats.c | 2 +-
2 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/utils/activity/pgstat_shmem.c b/src/backend/utils/activity/pgstat_shmem.c
index 955faf5ebc7d..b8f354c818a0 100644
--- a/src/backend/utils/activity/pgstat_shmem.c
+++ b/src/backend/utils/activity/pgstat_shmem.c
@@ -150,8 +150,7 @@ StatsShmemSize(void)
continue;
Assert(kind_info->shared_size != 0);
-
- sz += MAXALIGN(kind_info->shared_size);
+ sz = add_size(sz, MAXALIGN(kind_info->shared_size));
}
return sz;
@@ -189,6 +188,7 @@ StatsShmemInit(void *arg)
* efficiency win.
*/
ctl->raw_dsa_area = p;
+ p += pgstat_dsa_init_size();
dsa = dsa_create_in_place(ctl->raw_dsa_area,
pgstat_dsa_init_size(),
LWTRANCHE_PGSTATS_DSA, NULL);
@@ -242,7 +242,8 @@ StatsShmemInit(void *arg)
int idx = kind - PGSTAT_KIND_CUSTOM_MIN;
Assert(kind_info->shared_size != 0);
- ctl->custom_data[idx] = ShmemAlloc(kind_info->shared_size);
+ ctl->custom_data[idx] = p;
+ p += MAXALIGN(kind_info->shared_size);
ptr = ctl->custom_data[idx];
}
diff --git a/src/test/modules/test_custom_stats/test_custom_fixed_stats.c b/src/test/modules/test_custom_stats/test_custom_fixed_stats.c
index f9e7c7172802..a066ce117a6d 100644
--- a/src/test/modules/test_custom_stats/test_custom_fixed_stats.c
+++ b/src/test/modules/test_custom_stats/test_custom_fixed_stats.c
@@ -50,7 +50,7 @@ static const PgStat_KindInfo custom_stats = {
.fixed_amount = true, /* exactly one entry */
.write_to_file = true, /* persist to stats file */
- .shared_size = sizeof(PgStat_StatCustomFixedEntry),
+ .shared_size = sizeof(PgStatShared_CustomFixedEntry),
.shared_data_off = offsetof(PgStatShared_CustomFixedEntry, stats),
.shared_data_len = sizeof(((PgStatShared_CustomFixedEntry *) 0)->stats),
--
2.53.0
From f6787781026c7dcf6c9a38b0e7f8c8427a7b2da6 Mon Sep 17 00:00:00 2001
From: Michael Paquier <[email protected]>
Date: Mon, 6 Apr 2026 09:47:02 +0900
Subject: [PATCH v3] Use the allocated space properly for custom stats kind
---
src/backend/utils/activity/pgstat_shmem.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/backend/utils/activity/pgstat_shmem.c b/src/backend/utils/activity/pgstat_shmem.c
index 08ec264baa3a..2b7f783ef7c4 100644
--- a/src/backend/utils/activity/pgstat_shmem.c
+++ b/src/backend/utils/activity/pgstat_shmem.c
@@ -142,8 +142,7 @@ StatsShmemSize(void)
continue;
Assert(kind_info->shared_size != 0);
-
- sz += MAXALIGN(kind_info->shared_size);
+ sz = add_size(sz, MAXALIGN(kind_info->shared_size));
}
return sz;
@@ -227,7 +226,8 @@ StatsShmemInit(void)
int idx = kind - PGSTAT_KIND_CUSTOM_MIN;
Assert(kind_info->shared_size != 0);
- ctl->custom_data[idx] = ShmemAlloc(kind_info->shared_size);
+ ctl->custom_data[idx] = p;
+ p += MAXALIGN(kind_info->shared_size);
ptr = ctl->custom_data[idx];
}
--
2.53.0
Attachments:
[text/plain] v3-0001-Use-the-allocated-space-properly-for-custom--HEAD.patch (2.1K, 2-v3-0001-Use-the-allocated-space-properly-for-custom--HEAD.patch)
download | inline diff:
From 943746c5b430b485e15c44a0b7bf099454cee7dd Mon Sep 17 00:00:00 2001
From: Michael Paquier <[email protected]>
Date: Mon, 6 Apr 2026 09:47:02 +0900
Subject: [PATCH v3] Use the allocated space properly for custom stats kind
---
src/backend/utils/activity/pgstat_shmem.c | 7 ++++---
.../modules/test_custom_stats/test_custom_fixed_stats.c | 2 +-
2 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/utils/activity/pgstat_shmem.c b/src/backend/utils/activity/pgstat_shmem.c
index 955faf5ebc7d..b8f354c818a0 100644
--- a/src/backend/utils/activity/pgstat_shmem.c
+++ b/src/backend/utils/activity/pgstat_shmem.c
@@ -150,8 +150,7 @@ StatsShmemSize(void)
continue;
Assert(kind_info->shared_size != 0);
-
- sz += MAXALIGN(kind_info->shared_size);
+ sz = add_size(sz, MAXALIGN(kind_info->shared_size));
}
return sz;
@@ -189,6 +188,7 @@ StatsShmemInit(void *arg)
* efficiency win.
*/
ctl->raw_dsa_area = p;
+ p += pgstat_dsa_init_size();
dsa = dsa_create_in_place(ctl->raw_dsa_area,
pgstat_dsa_init_size(),
LWTRANCHE_PGSTATS_DSA, NULL);
@@ -242,7 +242,8 @@ StatsShmemInit(void *arg)
int idx = kind - PGSTAT_KIND_CUSTOM_MIN;
Assert(kind_info->shared_size != 0);
- ctl->custom_data[idx] = ShmemAlloc(kind_info->shared_size);
+ ctl->custom_data[idx] = p;
+ p += MAXALIGN(kind_info->shared_size);
ptr = ctl->custom_data[idx];
}
diff --git a/src/test/modules/test_custom_stats/test_custom_fixed_stats.c b/src/test/modules/test_custom_stats/test_custom_fixed_stats.c
index f9e7c7172802..a066ce117a6d 100644
--- a/src/test/modules/test_custom_stats/test_custom_fixed_stats.c
+++ b/src/test/modules/test_custom_stats/test_custom_fixed_stats.c
@@ -50,7 +50,7 @@ static const PgStat_KindInfo custom_stats = {
.fixed_amount = true, /* exactly one entry */
.write_to_file = true, /* persist to stats file */
- .shared_size = sizeof(PgStat_StatCustomFixedEntry),
+ .shared_size = sizeof(PgStatShared_CustomFixedEntry),
.shared_data_off = offsetof(PgStatShared_CustomFixedEntry, stats),
.shared_data_len = sizeof(((PgStatShared_CustomFixedEntry *) 0)->stats),
--
2.53.0
[text/plain] v3-0001-Use-the-allocated-space-properly-for-custom-s-v18.patch (1.1K, 3-v3-0001-Use-the-allocated-space-properly-for-custom-s-v18.patch)
download | inline diff:
From f6787781026c7dcf6c9a38b0e7f8c8427a7b2da6 Mon Sep 17 00:00:00 2001
From: Michael Paquier <[email protected]>
Date: Mon, 6 Apr 2026 09:47:02 +0900
Subject: [PATCH v3] Use the allocated space properly for custom stats kind
---
src/backend/utils/activity/pgstat_shmem.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/backend/utils/activity/pgstat_shmem.c b/src/backend/utils/activity/pgstat_shmem.c
index 08ec264baa3a..2b7f783ef7c4 100644
--- a/src/backend/utils/activity/pgstat_shmem.c
+++ b/src/backend/utils/activity/pgstat_shmem.c
@@ -142,8 +142,7 @@ StatsShmemSize(void)
continue;
Assert(kind_info->shared_size != 0);
-
- sz += MAXALIGN(kind_info->shared_size);
+ sz = add_size(sz, MAXALIGN(kind_info->shared_size));
}
return sz;
@@ -227,7 +226,8 @@ StatsShmemInit(void)
int idx = kind - PGSTAT_KIND_CUSTOM_MIN;
Assert(kind_info->shared_size != 0);
- ctl->custom_data[idx] = ShmemAlloc(kind_info->shared_size);
+ ctl->custom_data[idx] = p;
+ p += MAXALIGN(kind_info->shared_size);
ptr = ctl->custom_data[idx];
}
--
2.53.0
[application/pgp-signature] signature.asc (833B, 4-signature.asc)
download
view thread (5+ messages) latest in thread
reply
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: [email protected]
Cc: [email protected], [email protected]
Subject: Re: Shmem allocated wrong for custom cumulative stats
In-Reply-To: <[email protected]>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox