diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 05afcb0088d66f9889e0f1294974b0d0d747919e..e8b9d1a4dd8b07b97f42a4bc2b11b4bf66cc825a 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -758,6 +758,8 @@ DefineIndex(Oid relationId,
 	 */
 	validate_index(relationId, indexRelationId, snapshot);
 
+	PrintSnapMgrStatus("concurrent index build, before snapshot release");
+
 	/*
 	 * Drop the reference snapshot.  We must do this before waiting out other
 	 * snapshot holders, else we will deadlock against other processes also
@@ -770,9 +772,13 @@ DefineIndex(Oid relationId,
 	limitXmin = snapshot->xmin;
 
 	PopActiveSnapshot();
+	PrintSnapMgrStatus("concurrent index build, after PopActiveSnapshot");
 	UnregisterSnapshot(snapshot);
+	PrintSnapMgrStatus("concurrent index build, after UnregisterSnapshot");
 	InvalidateCatalogSnapshot();
 
+	PrintSnapMgrStatus("concurrent index build, after InvalidateCatalogSnapshot");
+
 	/*
 	 * The index is now valid in the sense that it contains all currently
 	 * interesting tuples.  But since it might not contain tuples deleted just
diff --git a/src/backend/utils/time/snapmgr.c b/src/backend/utils/time/snapmgr.c
index 331c91044f2fe816a5f969722ce80060da755737..2a3d915e1f9beed43154c60852da6f862a7e06ec 100644
--- a/src/backend/utils/time/snapmgr.c
+++ b/src/backend/utils/time/snapmgr.c
@@ -1401,3 +1401,17 @@ HistoricSnapshotGetTupleCids(void)
 	Assert(HistoricSnapshotActive());
 	return tuplecid_data;
 }
+
+void
+PrintSnapMgrStatus(const char *context)
+{
+	int			asdepth = 0;
+	ActiveSnapshotElt *active;
+
+	for (active = ActiveSnapshot; active != NULL; active = active->as_next)
+		asdepth++;
+
+	elog(LOG, "%s: %d reg snaps, %d active snaps, cat snap %p, xmin %u",
+		 context, RegisteredSnapshots, asdepth,
+		 CatalogSnapshot, MyPgXact->xmin);
+}
diff --git a/src/include/utils/snapmgr.h b/src/include/utils/snapmgr.h
index c6aa3619508894823358f684329d1dc266f125ff..71452d9afe11ba34ea2fdcc0e7df32e242a64010 100644
--- a/src/include/utils/snapmgr.h
+++ b/src/include/utils/snapmgr.h
@@ -65,4 +65,6 @@ extern void SetupHistoricSnapshot(Snapshot snapshot_now, struct HTAB *tuplecids)
 extern void TeardownHistoricSnapshot(bool is_error);
 extern bool HistoricSnapshotActive(void);
 
+extern void PrintSnapMgrStatus(const char *context);
+
 #endif   /* SNAPMGR_H */