From a94a4e6a085bd94ac81fad6ca255cbf428329dde Mon Sep 17 00:00:00 2001
From: Rahila Syed <rahilasyed.90@gmail.com>
Date: Fri, 21 Nov 2025 14:49:38 +0530
Subject: [PATCH] Segmentation fault reproducer

---
 .../test_dsm_registry/test_dsm_registry.c     | 44 +++++++++++++++++++
 1 file changed, 44 insertions(+)

diff --git a/src/test/modules/test_dsm_registry/test_dsm_registry.c b/src/test/modules/test_dsm_registry/test_dsm_registry.c
index 4cc2ccdac3f..618a3be1341 100644
--- a/src/test/modules/test_dsm_registry/test_dsm_registry.c
+++ b/src/test/modules/test_dsm_registry/test_dsm_registry.c
@@ -13,12 +13,16 @@
 #include "postgres.h"
 
 #include "fmgr.h"
+#include "miscadmin.h"
+#include "postmaster/bgworker.h"
 #include "storage/dsm_registry.h"
 #include "storage/lwlock.h"
 #include "utils/builtins.h"
 
 PG_MODULE_MAGIC;
 
+PGDLLEXPORT pg_noreturn void TestDSMRegistryMain(Datum main_arg);
+
 typedef struct TestDSMRegistryStruct
 {
 	int			val;
@@ -144,3 +148,43 @@ get_val_in_hash(PG_FUNCTION_ARGS)
 
 	PG_RETURN_TEXT_P(val);
 }
+
+void
+_PG_init(void)
+{
+	BackgroundWorker bgw;
+
+	if (!process_shared_preload_libraries_in_progress)
+		return;
+
+	memset(&bgw, 0, sizeof(bgw));
+	bgw.bgw_flags = BGWORKER_SHMEM_ACCESS |
+		BGWORKER_BACKEND_DATABASE_CONNECTION;
+	bgw.bgw_start_time = BgWorkerStart_RecoveryFinished;
+	snprintf(bgw.bgw_library_name, MAXPGPATH, "test_dsm_registry");
+	snprintf(bgw.bgw_function_name, BGW_MAXLEN, "TestDSMRegistryMain");
+	snprintf(bgw.bgw_name, BGW_MAXLEN,
+			 "DSM background worker");
+	snprintf(bgw.bgw_type, BGW_MAXLEN,
+			 "DSM background worker");
+	bgw.bgw_restart_time = 5;
+	bgw.bgw_notify_pid = 0;
+	bgw.bgw_main_arg = (Datum) 0;
+
+	RegisterBackgroundWorker(&bgw);
+}
+
+void
+TestDSMRegistryMain(Datum main_arg)
+{
+	TestDSMRegistryHashEntry *entry;
+	char	   *key = "test";
+	bool		found;
+
+	tdr_attach_shmem();
+
+	entry = dshash_find_or_insert(tdr_hash, key, &found);
+	elog(FATAL, "triggered fatal error during dshash lock");
+
+	dshash_release_lock(tdr_hash, entry);
+}
-- 
2.34.1

