diff --git a/contrib/amcheck/t/002_cic.pl b/contrib/amcheck/t/002_cic.pl
index 0b14e66270..1f258dd59d 100644
--- a/contrib/amcheck/t/002_cic.pl
+++ b/contrib/amcheck/t/002_cic.pl
@@ -9,7 +9,7 @@ use Config;
 use PostgreSQL::Test::Cluster;
 use PostgreSQL::Test::Utils;
 
-use Test::More tests => 4;
+use Test::More tests => 3;
 
 my ($node, $result);
 
@@ -25,32 +25,18 @@ $node->safe_psql('postgres', q(CREATE TABLE tbl(i int)));
 $node->safe_psql('postgres', q(CREATE INDEX idx ON tbl(i)));
 
 #
-# Stress CIC with pgbench
+# Stress CIC with pgbench.
+#
+# pgbench might try to launch more than one instance of the CIC
+# transaction concurrently.  That would deadlock, so use an advisory
+# lock to ensure only one CIC runs at a time.
 #
-
-# Run background pgbench with CIC. We cannot mix-in this script into single
-# pgbench: CIC will deadlock with itself occasionally.
-my $pgbench_out   = '';
-my $pgbench_timer = IPC::Run::timeout(180);
-my $pgbench_h     = $node->background_pgbench(
-	'--no-vacuum --client=1 --transactions=200',
-	{
-		'002_pgbench_concurrent_cic' => q(
-			DROP INDEX CONCURRENTLY idx;
-			CREATE INDEX CONCURRENTLY idx ON tbl(i);
-			SELECT bt_index_check('idx',true);
-		   )
-	},
-	\$pgbench_out,
-	$pgbench_timer);
-
-# Run pgbench.
 $node->pgbench(
 	'--no-vacuum --client=5 --transactions=200',
 	0,
 	[qr{actually processed}],
 	[qr{^$}],
-	'concurrent INSERTs',
+	'concurrent INSERTs and CIC',
 	{
 		'002_pgbench_concurrent_transaction' => q(
 			BEGIN;
@@ -62,17 +48,17 @@ $node->pgbench(
 			SAVEPOINT s1;
 			INSERT INTO tbl VALUES(0);
 			COMMIT;
+		  ),
+		'002_pgbench_concurrent_cic' => q(
+			SELECT pg_try_advisory_lock(42)::integer AS gotlock \gset
+			\if :gotlock
+				DROP INDEX CONCURRENTLY idx;
+				CREATE INDEX CONCURRENTLY idx ON tbl(i);
+				SELECT bt_index_check('idx',true);
+				SELECT pg_advisory_unlock(42);
+			\endif
 		  )
 	});
 
-$pgbench_h->pump_nb;
-$pgbench_h->finish();
-$result =
-    ($Config{osname} eq "MSWin32")
-  ? ($pgbench_h->full_results)[0]
-  : $pgbench_h->result(0);
-is($result, 0, "pgbench with CIC works");
-
-# done
 $node->stop;
 done_testing();
