From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-Status: No, score=-3.9 required=3.0 tests=ALL_TRUSTED,AWL,BAYES_00 shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id AC8871FC0D for ; Sat, 6 Feb 2021 12:18:45 +0000 (UTC) From: Eric Wong To: meta@public-inbox.org Subject: [PATCH 11/17] treewide: replace confess with croak Date: Sat, 6 Feb 2021 12:18:38 +0000 Message-Id: <20210206121844.10979-12-e@80x24.org> In-Reply-To: <20210206121844.10979-1-e@80x24.org> References: <20210206121844.10979-1-e@80x24.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit List-Id: The PublicInbox::Eml (and previously Email::MIME) use of confess was the primary (or only) culprit behind the lei2mail segfaults fixed by commit 0795b0906cc81f40. ("ds: guard against stack-not-refcounted quirk of Perl 5"). We never care about a backtrace when dealing with Eml objects anyways, so it was just a worthless waste of CPU cycles. We can also drop confess in a few other places. Since we only use Perl and Inline::C, users will never be without source and can replace s/croak/Carp::confess/ on a per-callsite basis to help report problems. It's also possible to use PERL5OPT=-MCarp=verbose in the environment though still potentially risky. Link: https://public-inbox.org/meta/20210201082833.3293-1-e@80x24.org/ --- lib/PublicInbox/DS.pm | 10 +++++----- lib/PublicInbox/Eml.pm | 4 ++-- lib/PublicInbox/IPC.pm | 2 +- lib/PublicInbox/OverIdx.pm | 2 +- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/lib/PublicInbox/DS.pm b/lib/PublicInbox/DS.pm index 263c3458..ec965abe 100644 --- a/lib/PublicInbox/DS.pm +++ b/lib/PublicInbox/DS.pm @@ -32,7 +32,7 @@ use Scalar::Util qw(blessed); use PublicInbox::Syscall qw(:epoll); use PublicInbox::Tmpfile; use Errno qw(EAGAIN EINVAL); -use Carp qw(confess carp); +use Carp qw(carp); our @EXPORT_OK = qw(now msg_more dwaitpid); my $nextq; # queue for next_tick @@ -335,9 +335,9 @@ retry: $ev &= ~EPOLLEXCLUSIVE; goto retry; } - die "couldn't add epoll watch for $fd: $!\n"; + die "EPOLL_CTL_ADD $self/$sock/$fd: $!"; } - confess("DescriptorMap{$fd} defined ($DescriptorMap{$fd})") + croak("FD:$fd in use by $DescriptorMap{$fd} (for $self/$sock)") if defined($DescriptorMap{$fd}); $DescriptorMap{$fd} = $self; @@ -368,7 +368,7 @@ sub close { # notifications about it my $fd = fileno($sock); epoll_ctl($Epoll, EPOLL_CTL_DEL, $fd, 0) and - confess("EPOLL_CTL_DEL: $!"); + croak("EPOLL_CTL_DEL($self/$sock): $!"); # we explicitly don't delete from DescriptorMap here until we # actually close the socket, as we might be in the middle of @@ -587,7 +587,7 @@ sub msg_more ($$) { sub epwait ($$) { my ($sock, $ev) = @_; epoll_ctl($Epoll, EPOLL_CTL_MOD, fileno($sock), $ev) and - confess("EPOLL_CTL_MOD $!"); + croak("EPOLL_CTL_MOD($sock): $!"); } # return true if complete, false if incomplete (or failure) diff --git a/lib/PublicInbox/Eml.pm b/lib/PublicInbox/Eml.pm index f7f62e7b..81a6632b 100644 --- a/lib/PublicInbox/Eml.pm +++ b/lib/PublicInbox/Eml.pm @@ -332,7 +332,7 @@ sub body_set { sub body_str_set { my ($self, $body_str) = @_; my $charset = ct($self)->{attributes}->{charset} or - Carp::confess('body_str was given, but no charset is defined'); + croak('body_str was given, but no charset is defined'); body_set($self, \(encode($charset, $body_str, Encode::FB_CROAK))); } @@ -454,7 +454,7 @@ sub body_str { if ($STR_TYPE{$ct->{type}} && $STR_SUBTYPE{$ct->{subtype}}) { return body($self); } - Carp::confess("can't get body as a string for ", + croak("can't get body as a string for ", join("\n\t", header_raw($self, 'Content-Type'))); } decode($charset, body($self), Encode::FB_CROAK); diff --git a/lib/PublicInbox/IPC.pm b/lib/PublicInbox/IPC.pm index a0e6bfee..0dee2a92 100644 --- a/lib/PublicInbox/IPC.pm +++ b/lib/PublicInbox/IPC.pm @@ -11,7 +11,7 @@ package PublicInbox::IPC; use strict; use v5.10.1; use parent qw(Exporter); -use Carp qw(confess croak); +use Carp qw(croak); use PublicInbox::DS qw(dwaitpid); use PublicInbox::Spawn; use PublicInbox::OnDestroy; diff --git a/lib/PublicInbox/OverIdx.pm b/lib/PublicInbox/OverIdx.pm index 985c5473..9013ae23 100644 --- a/lib/PublicInbox/OverIdx.pm +++ b/lib/PublicInbox/OverIdx.pm @@ -456,7 +456,7 @@ sub dbh_close { sub create { my ($self) = @_; my $fn = $self->{filename} // do { - Carp::confess('BUG: no {filename}') unless $self->{dbh}; + croak('BUG: no {filename}') unless $self->{dbh}; return; }; unless (-r $fn) {