diff --git a/cassandane/Cassandane/Instance.pm b/cassandane/Cassandane/Instance.pm
index a2dc672..cc29490 100644
--- a/Cassandane/Instance.pm
+++ b/Cassandane/Instance.pm
@@ -2250,6 +2250,15 @@ sub getsyslog
     my ($self) = @_;
     my $logname = $self->{name};
     if ($self->{have_syslog_replacement} && $self->{_syslogfh}) {
+        # https://github.com/Perl/perl5/issues/21240
+        # eof status is no longer cleared automatically in newer perls
+        if ($self->{_syslogfh}->eof()) {
+            $self->{_syslogfh}->clearerr();
+        }
+        if ($self->{_syslogfh}->error()) {
+            die "error reading $self->{syslog_fname}";
+        }
+
         # hopefully unobtrusively, let busy log finish writing
         usleep(100_000); # 100ms (0.1s) as us
         my @lines = grep { m/$logname/ } $self->{_syslogfh}->getlines();
