I'm not sure how this happens (perl 5.34.1 on FreeBSD 13.2)
but it appears the {sock} check can succeed and then go undef
and become unable to call ->owner_pid.
This happens when libgit2 is in use, so perhaps that's a factor.
In any case, the rest of the tests succeed.
sub gcf_inflight ($) {
my ($self) = @_;
+ # FIXME: the first {sock} check can succeed but Perl can complain
+ # about calling ->owner_pid on an undefined value. Not sure why or
+ # how this happens but t/imapd.t can complain about it, sometimes.
if ($self->{sock}) {
- return $self->{inflight} if $self->{sock}->owner_pid == $$;
+ if (eval { $self->{sock}->owner_pid == $$ }) {
+ return $self->{inflight};
+ } elsif ($@) {
+ no warnings 'uninitialized';
+ warn "E: $self sock=$self->{sock}: owner_pid failed: ".
+ "$@ (continuing...)";
+ }
delete @$self{qw(sock inflight)};
} else {
$self->close;