diff --git a/src/test/perl/PostgresNode.pm b/src/test/perl/PostgresNode.pm
index fff8c992a3726a4185d3fb37606faeaf4b9f8d53..52708205850b15f3578033949e1a8fa1bcd382da 100644
--- a/src/test/perl/PostgresNode.pm
+++ b/src/test/perl/PostgresNode.pm
@@ -734,9 +734,7 @@ sub kill9
 	my $name = $self->name;
 	return unless defined $self->{_pid};
 	print "### Killing node \"$name\" using signal 9\n";
-	# kill(9, ...) fails under msys Perl 5.8.8, so fall back on pg_ctl.
-	kill(9, $self->{_pid})
-	  or TestLib::system_or_bail('pg_ctl', 'kill', 'KILL', $self->{_pid});
+	kill(9, $self->{_pid}) or BAIL_OUT("kill(9, $self->{_pid}) failed");
 	$self->{_pid} = undef;
 	return;
 }
diff --git a/src/test/recovery/t/017_shm.pl b/src/test/recovery/t/017_shm.pl
index 3cbe938ddd18f2679d75952c55bd6fc97ad9c141..633606b2be0bd8e216008b55a21e0f4ef82345f4 100644
--- a/src/test/recovery/t/017_shm.pl
+++ b/src/test/recovery/t/017_shm.pl
@@ -9,7 +9,14 @@ use Test::More;
 use TestLib;
 use Time::HiRes qw(usleep);
 
-plan tests => 5;
+if ($^O eq 'msys')
+{
+	plan skip_all => 'missing SIGKILL implementation';
+}
+else
+{
+	plan tests => 5;
+}
 
 my $tempdir = TestLib::tempdir;
 my $port;