This is an automated email from the ASF dual-hosted git repository.

tuhaihe pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/cloudberry.git

commit 649b46491c1e53153a5193ed13817bdd02156847
Author: liushengsong <[email protected]>
AuthorDate: Mon Jun 22 10:13:41 2026 +0800

    Re-enable pgstat temp file reporting and fix SIGSEGV in 
ReportTemporaryFileUsage
    
    Re-enable temporary file size reporting to pgstat and the associated
    Assert in FileClose. Fix a SIGSEGV in ReportTemporaryFileUsage that
    occurred during process exit when the resource owner was already
    released.
---
 src/backend/storage/file/fd.c       | 12 ++++++++----
 src/backend/utils/activity/pgstat.c |  3 +--
 2 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/src/backend/storage/file/fd.c b/src/backend/storage/file/fd.c
index ebbecff523f..407bb90cec2 100644
--- a/src/backend/storage/file/fd.c
+++ b/src/backend/storage/file/fd.c
@@ -1576,10 +1576,14 @@ FileAccess(File file)
 static void
 ReportTemporaryFileUsage(const char *path, off_t size)
 {
-       /* MERGE16_FIXME: Now the pgstat has not worked, so disable the report 
first */
-       return;
-       
-       pgstat_report_tempfile(size);
+       /*
+        * pgstat_report_tempfile() accesses shared memory via dshash, which
+        * may already be detached during process exit cleanup.  Calling it
+        * from PathNameDeleteTemporaryDir's walkdir causes SIGSEGV in
+        * dshash_find().  Guard with IsUnderPostmaster and 
proc_exit_inprogress.
+        */
+       if (!proc_exit_inprogress)
+               pgstat_report_tempfile(size);
 
        if (log_temp_files >= 0)
        {
diff --git a/src/backend/utils/activity/pgstat.c 
b/src/backend/utils/activity/pgstat.c
index a43dcb75398..beaeb669266 100644
--- a/src/backend/utils/activity/pgstat.c
+++ b/src/backend/utils/activity/pgstat.c
@@ -1301,8 +1301,7 @@ pgstat_get_kind_info(PgStat_Kind kind)
 void
 pgstat_assert_is_up(void)
 {
-       /* MERGE16_FIXME: Now the pgstat has not worked, so disable the assert 
first */
-//     Assert(pgstat_is_initialized && !pgstat_is_shutdown);
+       Assert(pgstat_is_initialized && !pgstat_is_shutdown);
 }
 #endif
 


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to